簡體   English   中英

gulp-if javascript文件但不在gulp-useref的特定目錄中

[英]gulp-if javascript file but not in specific directory for gulp-useref

我想對不在./src/components目錄中的javascript文件運行minifaction。 我試過這個:

    gulp.task('index', function () {
    var assets = useref.assets();

    return gulp.src('src/index.html')
        .pipe(assets)
        .pipe(gulpif('!./src/components/** && *.js', uglify()))
        .pipe(gulpif('*.css', minifyCss()))
        .pipe(assets.restore())
        .pipe(useref())
        .pipe(gulp.dest('dist'));
});

但它似乎沒有工作(即無論如何它在./src/components中的js文件上進行縮小)。

所有幫助表示贊賞。 提前致謝。

面對真正的問題更新

好的,這是重點。 gulp-if使用gulp-match來評估條件。 在那里你可以使用一組globs:

.pipe(gulpif(['*.js', '!./src/components/**'], uglify())

還是為了其他人:

gulp-if可能是錯誤的方法。 我建議一個流隊列。

var queue = require('streamqueue')

...

return queue.queue(
    // all the JS files without components
    gulp.src(['**/*.js', '!./src/components/**/'])
        .pipe(uglify()),
    // all JS files in components
    gulp.src('./src/components/**/*.js')
)
.done()
.pipe(doSomething())

這樣,您可以對所有非組件執行單獨的任務,然后執行常用過程。

代碼未經過測試,但您可以查看文檔

我認為真正的問題是var assets = useref.assets(); 將連接的文件存儲在assets 因此,單個文件的路徑將丟失,並且使用這些路徑的任何gulp-if語句都是無用的。

useref.assets(noconcat: true)有一個選項useref.assets(noconcat: true) 我以為我可以使用:

var assets = useref.assets(noconcat: true);

return gulp.src('src/index.html')
.pipe(assets)
.pipe(gulpif(['*.js', '!./src/components/**'], uglify())
.pipe...

但這也行不通。 我不確定為什么(可能沒有存儲文件的完整路徑?)。

無論我最終使用的解決方案是使用gulp-usemin。 gulp-usemin可以做我想要在我的原始帖子中完成的事情,如下所示:

gulp.task('usemin', function() {
    return gulp.src(paths.index)
        .pipe(usemin({
            js1: [uglify(), 'concat'],
            js2: ['concat'],
            css: [minifyCss(), 'concat']
        }))
        .pipe(gulp.dest('dist/'));
});

其中js1和js2是管道ID(在html中指定)。

useref.assets()將連接文件存儲在資產中是正確的。 但是,現在有一個選項可以將非連接文件傳遞到流中。 不確定這是否能解決問題,但在之前發布的另一個示例中,選項未正確傳遞。 選項應作為對象傳入,因此它應如下所示:

var assets = useref.assets({ noconcat: true });

return gulp.src('src/index.html')
    .pipe(assets)
    .pipe(gulpif(['*.js', '!./src/components/**'], uglify())
    .pipe...

我將更新文檔,因為我只是注意到它沒有選項的例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM