【发布时间】:2019-04-17 20:35:51
【问题描述】:
在一个 vue cli 3 项目中,我想在网页中显示一个版本号。版本号位于package.json 文件中。
我发现is this link in the vue forum的唯一参考。
但是,我无法让建议的解决方案发挥作用。
我尝试过的事情
-
在链接资源中使用
webpack.definePlugin:
vue.config.js
const webpack = require('webpack');
module.exports = {
lintOnSave: true,
configureWebpack: config => {
return {
plugins: [
new webpack.DefinePlugin({
'process.env': {
VERSION: require('./package.json').version,
}
})
]
}
},
}
然后在main.ts 我读到process.env,但它不包含 VERSION(我尝试了几种变体,比如在链接页面中生成 PACKAGE_JSON 字段,并生成像 'foo' 这样的普通值而不是读取来自package-json)。它从来没有用过,就像代码被忽略了一样。我猜process.env 稍后会被 vue webpack 的东西重新定义。
process 登录 main.ts 但包含 process 通常包含在 vue-cli 项目中的所有内容,例如在 .env 文件中定义的模式和 VUE_APP 变量。
-
尝试在configure webpack函数上写信给
process,
喜欢:
configureWebpack: config => {
process.VERSION = require('./package.json').version
},
(老实说,我对此并没有太大希望,但不得不尝试)。
-
尝试了链接页面中提出的其他解决方案,
喜欢:
// vue.config.js
module.exports = {
chainWebpack: config => {
config.plugin('define').tap( ([options = {}]) => {
return [{
...options, // these are the env variables from your .env file, if any arr defined
VERSION: JSON.stringify(require('./package.json').version)
}]
})
}
}
但这也默默地失败了。
-
使用@Oluwafemi 建议的
config.plugin('define')语法,
喜欢:
chainWebpack: (config) => {
return config.plugin('define').tap(
args => merge(args, [VERSION])
)
},
其中VERSION 是一个局部变量,定义为:
const pkgVersion = require('./package.json').version;
const VERSION = {
'process.env': {
VUE_APP_VERSION: JSON.stringify(pkgVersion)
}
}
但这也不起作用。
我每次都在重新启动整个项目,所以这不是流程内容不显示的原因。
我的 vue-cli 版本是 3.0.1。
【问题讨论】:
-
你试过
process.VERSION = JSON.parse(require('./package.json')).version吗? -
是的,也试过了。但是 VERSION 无论如何都不会出现在进程中。
标签: javascript vue.js webpack vuejs2 vue-cli-3