所以我是 webpack 的新手,但读了很多。
我正在尝试找出一项任务是否可以使用当前代码(包括插件等)。我们使用HtmlWebpackPlugin并为它提供一个自定义模板,要求它在结束 body 标签附近注入 script 标签。它工作正常,但我们想要的是能够控制注入到 html 模板中的标签。这是使用的默认标签:
<script src="/bundle.js"></script>
我们希望有一个自定义的脚本标签内容,而不是简单的脚本标签,如下所示:
<script type="text/javascript">
var bundleUrl;
if( document.cookie.indexOf('LOCALHOST=')== -1 ){
bundleUrl="/bundle.js"; // just an example...
} else {
bundleUrl = "http://localhost:8080/42565632a54c11195088 .bundle.js"; // use localhost source...
}
document.write(unescape('%3Cscript src="' + bundleUrl + '"%3E%3C/script%3E'));
</script>
以上将允许动态更改的 bundleUrl 在运行时根据 cookie 的存在而更改。
上述内容不能硬编码到模板中的原因是因为在生产环境中,捆绑包具有哈希前缀...。
我知道我们可以实现这一点的唯一方法是扩展 HtmlWebpackPlugin,但这不太可维护。
建议?
蒂亚!
临时解决方案
不是最漂亮的,但它有效。我最终只清空了“块”部分并将我的硬编码脚本标签插入到模板中。像这样:
plugins: [
new HtmlWebpackPlugin({
inject: 'body',
template: 'my-template.html',
filename: 'index.html',
chunks: []
})
这有效地让 HtmlWebpackPlugin 获取源模板并对其进行转换,内部没有任何更改,只是根据需要将其作为 index.html (我们的环境稍微复杂一些)。