微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Vue CLI 中进行构建时如何向 index.html 添加 HTML 注释?

如何解决在 Vue CLI 中进行构建时如何向 index.html 添加 HTML 注释?

更新 1:修复了导致我的初始构建错误的语法问题。

更新 2:使用 Webpack 插件找到了我自己的解决方案。查看已接受的解决方案。

我想在构建期间在 public/index.html添加一些自定义 HTML 注释。我添加了这样的内容

<!--
My Application
Version: <%= VUE_APP_VERSION %>
Build date: <%= VUE_APP_BUILD_DATE %>
-->

在我的 vue.config.js 中,我已经相应地设置了 VUE_APP_VERSIONVUE_APP_BUILD_DATE

let today = new Date().toLocaleDateString(undefined,{
  year: 'numeric',month: '2-digit',day: '2-digit'
})

process.env.VUE_APP_VERSION = require('./package.json').version
process.env.VUE_APP_BUILD_DATE = today

但是当我实际构建 (npm run build) 时,注释会被完全删除并且所有内容都被最小化。

如何保存我的评论

解决方法

在我的 HtmlWebpackPlugin 文件中找到了使用 WebpackAutoInjectvue.config.js 插件的解决方案;放弃在我的 VUE_APP_* 中使用 index.html 变量,因为它会导致我构建错误。

npm install html-webpack-plugin --save-dev
npm install webpack-auto-inject-version --save-dev

我的新vue.config.js

const HtmlWebpackPlugin = require('html-webpack-plugin')
const WebpackAutoInject = require('webpack-auto-inject-version')

module.exports = {
  publicPath: process.env.NODE_ENV === 'production'
    ? process.env.VUE_APP_PUBLIC_PATH_EN
    : '/',configureWebpack: {
    plugins: [
      // index.html customization
      new HtmlWebpackPlugin({
        template: 'public/index.html',filename: 'index.html',inject: true,deploy: process.env.VUE_APP_DEPLOY,webtrends: '/webtrends/scripts/webtrends.load.js',// include webtrends script for OPS only
        minify: {
          removeComments: false
        }
      }),// Auto inject version
      new WebpackAutoInject({
        SILENT: true,// options
        components: {
          AutoIncreaseVersion: false,InjectAsComment: false
        },componentsOptions: {
          InjectByTag: {
            // https://www.npmjs.com/package/dateformat
            dateFormat: 'isoUtcDateTime'
          }
        }
      })
    ]
  }
}

然后在我的 index.html 中(带有要包含在构建中的自定义脚本):

<!--
My application
Version: [AIV]{version}[/AIV]
Build date: [AIV]{date}[/AIV]
-->
<% if (htmlWebpackPlugin.options.deploy === 'ops') { %>
    <script src="<%= htmlWebpackPlugin.options.webtrends %>"></script>
<% } %>
,

我能够通过使用“HTML 转义插值”语法来实现这一点。

  • 用于非转义插值;
  • 用于 HTML 转义插值; ??这个
  • 用于 JavaScript 控制流。

也要注意不同的结束标记。

所以你的 index.html 变成:

<!--
My Application
Version: <%- VUE_APP_VERSION %>
Build date: <%- VUE_APP_BUILD_DATE %>
-->

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?