代码拉取完成,页面将自动刷新
const HtmlWebpackPlugin = require('html-webpack-plugin');
const pluginName = "HtmlAfterWebpackPlugin";
const chalk = require("chalk");
// 获取静态资源的帮助函数
const assetsHelp = data => {
let js = [];
const getAssetsName = {
js: item => `<script src="${item}"></script>`
}
for (let jsItem of data.js) {
js.push(getAssetsName.js(jsItem));
}
return { js };
}
class HtmlAfterWebpackPlugin {
constructor () {
this.jsArr = [];
}
apply(compiler) {
compiler.hooks.compilation.tap(pluginName, (compilation) => {
console.log(chalk.blue("webpack 构建过程开始!"));
HtmlWebpackPlugin.getHooks(compilation).beforeAssetTagGeneration.tapAsync(
pluginName,
(data, cb) => {
const { js } = assetsHelp(data.assets); // 获取 js
this.jsArr = js;
console.log(js);
cb(null, data);
}
)
HtmlWebpackPlugin.getHooks(compilation).beforeEmit.tapAsync(
pluginName,
(data, cb) => {
// data 里就是 beforeEmit 这个钩子能拿到的信息
// 有几个 chunk 就会输出几块信息
// console.log(data);
let _html = data.html;
_html = _html.replace('<!-- injectjs -->', this.jsArr.join(''));
data.html = _html;
cb(null, data);
}
)
});
}
}
module.exports = HtmlAfterWebpackPlugin;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。