Gulp / Grunt:只连接必要的JS文件?

时间:2014-10-01 21:02:18

标签: javascript node.js build-process gulp gulp-concat

我得到了

我有一个生成app.min.jslibs.min.js的gulp文件;相当自我规划:

var dev = {
    libs: [
        'bower_components/angular/angular.min.js',
        'bower_components/angular-foundation/mm-foundation-tpls.min.js',
        'bower_components/underscore.string/dist/underscore.string.min.js'
    ]
};

var build = {
    js: 'public/js'
};

gulp.task('libs', function() {
    return gulp.src(dev.libs)
    .pipe(concat('libs.min.js'))
    .pipe(uglify({mangle: false}))
    .pipe(gulp.dest(build.js));
});

在此设置中,每当我添加或删除库时,我都必须手动将其添加到dev.libs数组(并且也按正确的顺序),然​​后重新启动Gulp以查看新的lib文件。 / p>

我想要

我希望能够在(array) dev.libs中连接我使用的js lib而无需专门定义它们。目前,如果我使用return gulp.src('**/*.js'),我相信它会连接bower_components中的每个js文件,这显然是荒谬的。

问题

有没有办法自动加载 concat 我需要的库,而不必在gulpfile中定义它们?

1 个答案:

答案 0 :(得分:1)

对于 Bower ,您可以使用插件 main-bower-files 来解析bower.json的内容并搜索main每个依赖项的文件,所以你不必声明每个lib。

var bowerFiles = require('main-bower-files');

然后你可以这样做:

gulp.task('libs', function () {
  return gulp.src(bowerFiles())
    .pipe(concat('libs.min.js'))
    .pipe(uglify({mangle: false}))
    .pipe(gulp.dest(build.js));
});