Как я могу переопределить теги src, сгенерированные HtmlWebpackPlugin?

У меня есть несколько выходных данных с некоторым хэшем в имени в моей конфигурации Webpack, поэтому я пытаюсь использовать HtmlWebpackPlugin для автоматического создания индексного HTML-файла, который обслуживает приложение SPA. . Все идет нормально.

Однако, поскольку я обслуживаю приложение SPA из среды MVC с механизмом шаблонов; Я хочу, чтобы он решал, где находятся активы. Это означает, что я должен изменить теги <script>, поставленные HtmlWebpackPlugin, например:

От:

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

To:

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

Я читал документы и присматривался к перечисленным расширениям, но не повезло. Есть ли какой-либо недокументированный способ достижения того, что я пытаюсь сделать?


person Hilmi Erdem KEREN    schedule 13.06.2019    source источник


Ответы (1)


Я разработал плагин для этого. Вот исходный код:

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

person Hilmi Erdem KEREN    schedule 13.06.2019