是否可以使用html-webpack-plugin在头部和部分内部编写一些块?
这是我对html-webpack-plugin的配置:
var HtmlWebpackPluginConfigIndex = {
template: path.join(__dirname, 'src/core/server/views', 'index.dust'),
filename: 'core/server/views/index.dust',
hash: true,
chunksSortMode: 'none'
// chunks: ['core/public/js/vendor']
};
当我使用此配置的副本但更改了块时:
var HtmlWebpackPluginConfigIndex = {
template: path.join(__dirname, 'src/core/server/views', 'index.dust'),
filename: 'core/server/views/index.dust',
hash: true,
inject: 'head',
chunksSortMode: 'none'
chunks: ['core/public/js/vendor']
};
var HtmlWebpackPluginConfigIndex2 = {
template: path.join(__dirname, 'src/core/server/views', 'index.dust'),
filename: 'core/server/views/index.dust',
hash: true,
inject: 'body',
chunksSortMode: 'none'
chunks: ['core/public/js/app']
};
....
new HtmlWebpackPlugin(HtmlWebpackPluginConfigIndex);
new HtmlWebpackPlugin(HtmlWebpackPluginConfigIndex2);
Webpack仅适用于html-webpack-plugin的最后一块。
答案 0 :(得分:0)
您可以尝试将项目分叉,然后将代码改为如下:
html-webpack-plugin index.js:
HtmlWebpackPlugin.prototype.generateAssetTags = function (assets) {
...
// Add scripts to body or head
// <<< You would add this bit >>>
if (!! this.options.headScripts) {
var hScripts = this.options.headScripts;
head = head.concat(scripts.filter((s) => {
var src = s.attributes.src;
return hScripts.indexOf(src) > -1;
}));
body = body.concat(scripts.filter((s) => {
var src = s.attributes.src;
return hScripts.indexOf(src) < 0;
}));
// <<< to here (and the following "else" in front of the if) >>>
else if (this.options.inject === 'head') {
...
}
然后在插件定义中添加headScripts
选项:
plugins: [
new HTMLWebpackPlugin({
template: path.join(__dirname, 'src','core','server','views', 'index.dust'),
filename: 'core/server/views/index.dust',
headScripts: ['vendor.bundle.js'] // or whatever your output filename is
})
]