【问题标题】:Embed script only on production with Vue CLI 3仅在使用 Vue CLI 3 的生产环境中嵌入脚本
【发布时间】:2021-04-14 12:19:56
【问题描述】:

我的主要目标是仅在生产中将标签注入到我的 index.html 中(这是一个 New Relic 监控代码 sn-p)。

我的 Vue.js 是构建并用作静态资源的,因此在此用例中使用 {% %} 标记将脚本块包围起来似乎不起作用。

所以我尝试使用 html-webpack-plugin 在我的 Vue.js 应用程序上添加 New Relic 代码 sn-p,因为我在 html-webpack-plugin 上找到了一个简单的 Webpack 插件。这是一个非常简单的插件,它只是创建节点并将其推送到页面正文中:https://github.com/robrap/html-webpack-new-relic-plugin/blob/master/src/index.js#L25

我通过这种方式设置我的vue.config.js 来注册插件(我首先尝试添加脚本,无论环境如何):

var HtmlWebpackPlugin = require('html-webpack-plugin');
var HtmlWebpackNewRelicPlugin = require('@yodatech/html-webpack-new-relic-plugin');

module.exports = {
  configureWebpack: {
    plugins: [
      new HtmlWebpackPlugin(),
      new HtmlWebpackNewRelicPlugin({the plugin options})
    ]
  }
}

该插件实际上很好地完成了它的工作(代码 sn-p 被注入),但它的执行与 Vue CLI 默认配置相混淆。

最终 index.html 文件中不再引用某些样式表和脚本,<div id=app></div> 不再存在,应用程序已损坏。

我不知道使用 HtmlWebpackPlugin 是不是死路一条,但我目前不知道有什么其他方法可以达到我的目标。

有没有人知道我怎样才能完成这项工作?

非常感谢路过的人。

编辑:我尝试使用的插件似乎有缺陷,我必须对其进行修改以使其与 Vue CLI 一起使用。我的主要问题已通过所选答案解决。

【问题讨论】:

    标签: vue.js webpack-4


    【解决方案1】:

    vue.config.js 选项 configureWebpack 只是 merges the options 您提供给 Vue CLI 提供的 webpack 配置。因此,通过使用您的代码,您将运行 2 个不同的 HtmlWebpackPlugins(一个来自您的配置,另一个来自 Vue CLI)

    试试这个:

    var HtmlWebpackNewRelicPlugin = require('@yodatech/html-webpack-new-relic-plugin');
    
    module.exports = {
      configureWebpack: {
        plugins: [
          new HtmlWebpackNewRelicPlugin({the plugin options})
        ]
      }
    }
    

    【讨论】:

    • 非常感谢您的回答!我检查了您链接的文档,我不知道,根据它,您的建议完全有道理。不幸的是,它不起作用。两件事:如果我从我的 package.json 中删除“html-webpack-plugin”,插件根本不会执行。如果我保留它,它会被执行,但永远不会触发github.com/robrap/html-webpack-new-relic-plugin/blob/… 处的“alterAssetTagGroups”点击(尽管它已正确添加)。也许这个插件不是要走的路。
    • 我没有告诉你从package.json 中删除html-webpack-plugin。该插件由 Vue CLI 使用 - 您可以通过在命令行上执行 vue inspect 来检查 Vue CLI 使用的 Webppack 配置。只是不要将它添加到vue.config.js,因为 Vue CLI 默认包含该插件....
    • 删除只是一个测试,我觉得很奇怪我的插件在删除时根本没有执行,因为它是 Vue CLI 的开发依赖项。无论如何,您的回答使我能够执行插件而不会弄乱 Vue CLI 设置。我设法通过分叉和修改它来让插件工作,我发现了一个在构建过程中实际调用的钩子。它现在工作得很好。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 2017-12-27
    • 2019-11-06
    • 2019-10-27
    • 2019-04-10
    • 2018-06-05
    • 1970-01-01
    相关资源
    最近更新 更多