gulp useref不能处理多个html文件
我的项目中有5个HTML文件,每个底部都有一个useref块,如下所示:
<!-- build:js static/js/main.js --> <script src="static/js/plugins.js"></script> <!-- endbuild -->
所有5个文件中的常见JS文件是plugins.js。 我需要在每个HTML文件中的JS文件,并在我的所有文件中重复。 我的第二个HTML文件有这个块(再次plugins.js在那里):
<!-- build:js static/js/main.js --> <script src="static/js/jquery.barrating.min.js"></script> <script src="static/js/plugins.js"></script> <!-- endbuild -->
而我的第五个HTML文件有这个块:
<!-- build:js static/js/main.js --> <script src="static/js/jquery.matchHeight-min.js"></script> <script src="static/js/jquery.barrating.min.js"></script> <script src="static/js/plugins.js"></script> <!-- endbuild -->
所以在每个使用plugins.js的文件中,在一些文件中我使用了一些其他的库。 但是,当我运行任务这三个文件不连接到main.js。 main.js中只有来自plugins.js的内容。 其他库不包括在main.js中。 为什么? 我可以使用这个插件吗?
我的一口气任务:
gulp.task('compress:js:html', ['clear:dist'], function () { return gulp.src('./*.html') .pipe(useref()) .pipe(htmlmin({collapseWhitespace: true})) .pipe(gulp.dest('./dist/')) });
所有的HTML文件都为连接文件( static/js/main.js
)指定了相同的位置,但是它们都指定了应该连接的不同源文件。 根据你的HTML文件的处理顺序,你最终会得到一个不同的static/js/main.js
在你的情况下,从你的第一个例子。
你有两个select:
-
对于每个HTML文件,为连接文件指定一个不同的位置:
HTML文件1:
<!-- build:js static/js/main1.js --> <script src="static/js/plugins.js"></script> <!-- endbuild -->
HTML文件2:
<!-- build:js static/js/main2.js --> <script src="static/js/jquery.barrating.min.js"></script> <script src="static/js/plugins.js"></script> <!-- endbuild -->
HTML文件3:
<!-- build:js static/js/main3.js --> <script src="static/js/jquery.matchHeight-min.js"></script> <script src="static/js/jquery.barrating.min.js"></script> <script src="static/js/plugins.js"></script> <!-- endbuild -->
这将减less浏览器为每个页面所做的请求数量,但不会利用浏览器caching。
-
请参阅每个HTML文件中的所有 JS文件,无论您是否需要特定页面的JS文件。 这意味着在所有的三个HTML文件中都有以下内容:
<!-- build:js static/js/main.js --> <script src="static/js/jquery.matchHeight-min.js"></script> <script src="static/js/jquery.barrating.min.js"></script> <script src="static/js/plugins.js"></script> <!-- endbuild -->
由于浏览器将caching生成的
main.js
文件,只需要下载一次。