gulp-useref与几个html文件以及如何获取包含在资产中的文件列表

时间:2015-10-19 18:46:21

标签: javascript html gulp gulp-useref

如果我将gulp-useref与几个html文件一起使用,则每次使用相同的包进行处理。

  1. 有没有办法处理第一个传入的包 并只是替换其他文件中的字符串?例如,如果你看 下面的代码 - gulp-useref创建vendor.js两次(第二次它 重写以前的文件)。 如果你有很多文件,你使用缩小css和js然后它 可能需要很长时间,具体取决于您使用相同捆绑包的文件数量。

  2. 如何复制未包含在捆绑包中的其他文件?

  3. 结构:

    的HTML文件1.HTML

    <!-- build:js js/vendor.js -->
    <script scr="js/script-1.js"></script>
    <script scr="js/script-2.js"></script>
    <!-- endbuild -->
    <script scr="js/file-1-script.js"></script>
    

    的HTML文件2.HTML

    <!-- build:js js/vendor.js -->
    <script scr="js/script-1.js"></script>
    <script scr="js/script-2.js"></script>
    <!-- endbuild -->
    <script scr="js/file-2-script.js"></script>
    

    任务:

    var files = [],
        getExcludedFiles = function() {
           var temp = files;
           for(var i = 0; i < temp.length; i++) {
              temp[i] = "!" + temp[i]
           }
    
           return temp;
        };
    
    gulp.task("useref", function() {
       var assets = useref.assets();
    
       return gulp.src(path_to_htmls)
                  .pipe(assests)
                  .pipe(some_function_to_store_bundle_files_in_some_var)
                  .pipe(gulpif('*.js', uglify()))
                  .pipe(assets.restore())
                  .pipe(useref())
                  .pipe(gulp.dest(dets_path))
    });
    
    
    gulp.task("js", ["useref"], function() {
       return gulp.src([path_to_JS, getExcludedFiles()])
                  .pipe(gulp.dest(JS_dets_path))
    });
    

1 个答案:

答案 0 :(得分:0)

我认为gulp-cached可以满足您的需求。

https://github.com/contra/gulp-cached

  

这将保留已通过&gt;通过它的文件(及其内容)的内存缓存。如果文件在上次运行时已经通过,则不会向下游传递。这意味着您只需处理所需内容并节省时间和资源。