如果我将gulp-useref与几个html文件一起使用,则每次使用相同的包进行处理。
有没有办法处理第一个传入的包 并只是替换其他文件中的字符串?例如,如果你看 下面的代码 - gulp-useref创建vendor.js两次(第二次它 重写以前的文件)。 如果你有很多文件,你使用缩小css和js然后它 可能需要很长时间,具体取决于您使用相同捆绑包的文件数量。
如何复制未包含在捆绑包中的其他文件?
结构:
的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))
});
答案 0 :(得分:0)
我认为gulp-cached
可以满足您的需求。
https://github.com/contra/gulp-cached
这将保留已通过&gt;通过它的文件(及其内容)的内存缓存。如果文件在上次运行时已经通过,则不会向下游传递。这意味着您只需处理所需内容并节省时间和资源。