0

いくつかのソースをマージするクイック gulp タスクを作成しました。既存の JS ビルド フォルダーからすべてをクリアすることから始め、次に AngularJS テンプレート キャッシュをビルドし、最後にアプリケーションで使用するためにファイルを縮小および連結しますが、gulp が実行される 4 回のうち 3 回は、エラーを示すエラーがスローされます。ビルド中にファイルまたはフォルダーが既に存在します:

$ gulp compress
[13:29:52] Using gulpfile D:\projects\app\mobile\gulpfile.js
[13:29:52] Starting 'compress'...
stream.js:74
      throw er; // Unhandled stream error in pipe.
      ^

Error: EEXIST: file already exists, mkdir 'D:\projects\app\mobile\www\js\components'
    at Error (native)

ただし、このサブタスクを実行する前に、クリアによりすべてのファイルとフォルダーが削除されているはずです。

gulp.task('compress', function (done) {

    // Clear existing build files
    var clear = gulp.src('./www/js/**/*')
        .pipe(vinylPaths(del));

    // Build the template cache
    var cache = gulp.src('./www/templates/**/*.tpl.html')
        .pipe(templateCache('app-templates.js', {
            root: 'templates',
            transformUrl: function (url) {
                return url.replace(/\.tpl\.html$/, '.html')
            }
        }))
        .pipe(gulp.dest('./www/js'))

    // Minify and concatenate the application
    var build = gulp.src('./src/**/*.js')
        .pipe(uglify({
            mangle: false
        }))
        .pipe(gulp.dest('./www/js'))
        .pipe(concat('app.min.js'))
        .pipe(gulp.dest('./www/js/build'));

    // Merge multiple sources into a single task
    return merge(clear, cache, build);
});

私が見逃したアイデアはありますか?または、このタイプのタスクを実行するためのより良い方法はありますか? 古いビルドを消去しないこと以外はうまく機能しているようです。

4

0 に答える 0