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

まあ、1 つのオプションはgulp-orderを試すことです。

また、 「gulp concat scripts in order?」に対するこの回答もチェックしてください。.

基本的に、ファイルを入れたい順序でファイルに明示的に名前を付ける必要があることについて、あなたがすでに言ったことに言及しています。 ?

ただし、指摘する価値のあることの 1 つは、順序が重要でないファイルのグループがあり、次に順序が重要な 2 つのファイルがある場合、次のようなことができるということです。

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

gulp-concat は files を繰り返さないsome-service.jsため、連結されない、または連結される予定のすべてがsomething-that-depends-on-some-service.js最初に連結され、次に最後の 2 つのファイルが適切な順序で連結されます。

于 2015-05-21T00:30:56.013 に答える
1

言及されていないため、webpack または browserify を実装すると、ある種のハッキーな解決策を実装しなくても、この問題を完全に解決できます。

これを使用する方法の簡単な例を次に示します。

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 に答える