如果我将 gulp-useref 与几个 html 文件一起使用,它每次都使用相同的包进行处理。
有没有办法处理第一个传入的包并只替换其他文件中的字符串?例如,如果您查看下面的代码 - gulp-useref 创建 vendor.js 两次(第二次重写之前的文件)。如果您有很多文件并且您使用 css 和 js 的缩小,则可能需要很长时间,具体取决于您使用的具有相同捆绑包的文件数量。
如何复制未包含在捆绑包中的其他文件?
结构:
html-file-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-file-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))
});