【发布时间】:2016-07-11 14:47:50
【问题描述】:
所以我是 webpack 的新手,但阅读了很多。
我正在尝试找出一项任务是否适用于当前代码(包括插件等)。 我们使用HtmlWebpackPlugin 并为其提供一个自定义模板,要求它在结束正文标记附近注入脚本标记。它工作正常,但我们想要的是能够控制注入到 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,但这不太可维护。
建议?
TIA!
临时解决方案
不是最漂亮的,但它有效。我最终只是清空了“块” 部分并在模板中插入我的硬编码脚本标签。像这样:
plugins: [
new HtmlWebpackPlugin({
inject: 'body',
template: 'my-template.html',
filename: 'index.html',
chunks: []
})
这有效地让 HtmlWebpackPlugin 获取源模板并对其进行转换,内部没有任何改变,只是根据需要将其作为 index.html 放置(我们的环境稍微复杂一些)。
【问题讨论】:
标签: javascript webpack html-webpack-plugin