如何覆盖HtmlWebpackPlugin生成的src标签?

时间:2019-06-13 08:31:04

标签: webpack html-webpack-plugin

我在 Webpack 配置中的名称中有多个带有哈希值的输出,这就是为什么我尝试利用 HtmlWebpackPlugin 自动生成可提供服务的索引HTML文件的原因SPA应用程序。到目前为止一切顺利。

但是,因为我是从带有模板引擎的MVC框架提供SPA应用程序的;我要它决定资产的位置。这意味着,我必须像这样修改HtmlWebpackPlugin放置的<script>标签:

发件人:

<script type="text/javascript" src="public/js/app.js">

收件人:

<script type="text/javascript" src="{{asset('app.js')}}">

我阅读了文档,并关注列出的扩展名,但没有运气。是否有任何未记录的方式来实现我想要的目标?

1 个答案:

答案 0 :(得分:0)

我开发了一个插件来实现这一目标。这是源代码:

function HtmlWebpackLaravelAssetPlugin(options) {}

HtmlWebpackLaravelAssetPlugin.prototype.apply = function (compiler) {
    compiler.plugin('compilation', (compilation) => {

        compilation.plugin(
            'html-webpack-plugin-after-html-processing',
            data => {
                data.html = data.html.replace(/(src\=\"public\/)(.*?)(\"\>)/gi, 'src={{ asset("$2") }}>')
            }
        )

    })
}

module.exports = HtmlWebpackLaravelAssetPlugin