Javascript 吞咽/咕哝:只连接必要的JS文件? 我知道了吗

Javascript 吞咽/咕哝:只连接必要的JS文件? 我知道了吗,javascript,node.js,build-process,gulp,gulp-concat,Javascript,Node.js,Build Process,Gulp,Gulp Concat,我有一个gulpfile,可以生成app.min.js和libs.min.js;不言自明: var dev = { libs: [ 'bower_components/angular/angular.min.js', 'bower_components/angular-foundation/mm-foundation-tpls.min.js', 'bower_components/underscore.string/dist/undersc

我有一个gulpfile,可以生成
app.min.js
libs.min.js
;不言自明:

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文件

我想要什么 我希望能够在不必在
(array)dev.libs
中明确定义它们的情况下解析我使用的js库。目前,如果我使用
return gulp.src('***.js')
,我相信它会在
bower\u组件中包含每个js文件,这显然是荒谬的

问题: 是否有一种方法可以自动加载和压缩我需要的库,而不必在gulpfile中定义它们?

对于Bower,您可以使用插件,该插件将解析您的
Bower.json
的内容,并搜索每个依赖项的
文件,因此,您不必声明每个库

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));
});

您应该使用一个模块系统,比如CommonJS和一个bundler。你的生活会变得越来越多easier@Bojangles-有没有理由使用CommonJS而不是RequireJS?我刚刚快速了解了这两个方面,后者听起来对客户端使用更有用。RequireJS可以异步加载模块,但我个人非常不喜欢文件顶部的双重定义,以及需要将每个模块的所有内容封装在回调中的事实。选择一个你喜欢的能满足你需要的,并尝试一下。这两个系统都有完善的生态系统。然而,Node使用CommonJS(Browserify),因此使用Browserify创建同构应用程序要容易得多。我已经做了一些进一步的阅读,我被卖掉了。我在使用它作为Bower支持和Browserify以及它添加的依赖管理之间左右为难。不过,这正好解决了我所说的问题,所以谢谢。没问题,很高兴能提供帮助:)我个人更喜欢使用Bower和Npm,但这取决于你