2

我正在使用 gulp 使用gulp-concatgulp-uglify构建单个 javascript 文件。

原始文件

//File 1
var Proj = Proj || {};

//File 2
Proj.Main = (function() { 
    var Method = function(){ /*Code*/ };
    return { "Method":Method };
})();

//File 3
Proj.Page = (function() { 
    var Method = Proj.Main.Method;
    return { "Method":Method };
})();

Gulp 返回一个错误的缩小文件,因为这些文件以错误的顺序连接。我知道我可以指定顺序,.src([])但我不想在添加 javascript 文件时维护数组。

有没有办法创建对这些“命名空间”的引用而不必担心连接文件的顺序?或者,gulp 有没有办法通过这些命名空间的知识自动处理连接?

编辑:

我知道我可以在.src([]). 我想在不必担心文件顺序的情况下进行开发,无论是通过 gulp 包还是 javascript 框架。感谢您提供帮助的回复,但我需要一个明确的“不。您不能这样做。” 或“是的。这是如何...”将线程标记为已回答。

4

2 回答 2

3

好吧,一种选择是尝试gulp-order

另外,请查看“按顺序执行 gulp concat 脚本?”的答案。.

基本上,它提到了你已经说过的,关于必须按照你希望它们进入的顺序显式命名文件。我知道你不想这样做,但是 gulp 怎么知道你想要文件的顺序?

不过,值得指出的一点是,您有一组文件的顺序无关紧要,然后,比如说,有 2 个文件的顺序很重要,您可以执行以下操作

gulp.src([
    'utils/*.js',
    'utils/some-service.js',
    'utils/something-that-depends-on-some-service'
])

gulp-concat 不会重复 files,因此所有没有some-service.jssomething-that-depends-on-some-service.js将首先连接的内容,然后最后两个文件将以正确的顺序连接。

于 2015-05-21T00:30:56.013 回答
1

由于没有提到,实现 webpack 或 browserify 绝对可以解决这个问题,而无需实现某种 hacky 感觉的解决方案。

这是一个如何使用它的简单示例:

var source = require('vinyl-source-stream'), //<--this is the key
    browserify = require('browserify');

    function buildEverything(){
        return browserify({
               //do your config here
                entries: './src/js/index.js',
            })
            .bundle()
            .pipe(source('index.js')) //this converts to stream
             //do all processing here.
             //like uglification and so on.
            .pipe(gulp.dest('bundle.js'));
        }
    }

    gulp.task('buildTask', buildEverything);

在您的文件中,您使用require语句来指示哪些文件需要其他文件。

于 2015-05-21T02:19:05.713 回答