HtmlWebpackPlugin - 在 body 的特定位置注入 js

kos*_*mak 1 javascript asset-management webpack html-webpack-plugin webpack-4

我正在使用 HtmlWebpackPlugin 将 javascript 注入到我的模板文件中:

<html>
    ...
    <body>
        ...
        <?php echo $this->inlineScript(); ?>
        <script type="text/javascript" src="/dist/vendor.js?a4212b4b10c2d4d2d73e"></script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是,我需要在 PHP 代码之前注入生成的包<?php echo $this->inlineScript(); ?>,以使内联脚本正常工作(它们需要 JQuery,它将在 vendor.js 中加载)。

结果应该是:

<html>
    ...
    <body>
        ...
        <script type="text/javascript" src="/dist/vendor.js?a4212b4b10c2d4d2d73e"></script>
        <?php echo $this->inlineScript(); ?>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这一目标?也许可以使用占位符之类的<%= htmlWebpackPlugin.options.??? %>或类似的东西?如果它不能与 HtmlWebpackPlugin 一起使用,我可以使用另一个 webpack 插件吗?

kos*_*mak 5

好吧,我想通了。将以下代码放在要包含 js 文件的位置:

<% for(var i=0; i < htmlWebpackPlugin.files.js.length; i++) {%>
    <script type="text/javascript" src="<%= htmlWebpackPlugin.files.js[i] %>"></script>
<% } %>
Run Code Online (Sandbox Code Playgroud)

并将injectHtmlWebpackPlugin 选项设置为 false。

请记住,您还需要手动注入其他内容(css、元标记等)。铁 CSS:

<% for(var i=0; i < htmlWebpackPlugin.files.css.length; i++) {%>
    <link type="text/css" rel="stylesheet" href="<%= htmlWebpackPlugin.files.css[i] %>">
<% } %>
Run Code Online (Sandbox Code Playgroud)