TLDR
Следующий фрагмент в файле vue.config.js
выполнит трюк и позволит вам получить доступ к версии вашего приложения как APPLICATION_VERSION
:
module.exports = {
configureWebpack: config => {
return {
plugins: [
new webpack.DefinePlugin({
'APPLICATION_VERSION': JSON.stringify(require('./package.json').version),
})
]
}
},
}
TIP:
Даже не пытайтесь добавить какой-либо ключ к process.env
через webpack.definePlugin
: он не будет работать так, как вы, вероятно, ожидаете.
Почему мои предыдущие попытки не сработали
В конце концов я решил проблему через webpack.DefinePlugin
.Основная проблема, с которой я столкнулся, заключалась в том, что исходное решение, которое я нашел, использовало definePlugin
для записи в переменную process.env.PACKAGE_JSON
.
Это говорит о том, что definePlugin
так или иначе позволяет добавлять переменные в process
или process.env
это не так.Всякий раз, когда я регистрировал process.env
в консоли, я не находил переменные, которые пытался вставить в process.env
: так что, хотя технология definePlugin
не работала.
На самом деле, что webpack.definePlugin
делает, чтобы проверить строки во время компиляции и изменить их значение прямо в вашем коде.Итак, если вы определяете переменную ACME_VERSION
с помощью:
module.exports = {
lintOnSave: true,
configureWebpack: config => {
return {
plugins: [
new webpack.DefinePlugin({
'ACME_VERSION': 111,
})
]
}
},
}
, а затем, в main.js
вы печатаете console.log(ACME_VERSION)
, вы получите 111
, правильно зарегистрированный .
Теперь, однако, это всего лишь строка изменения во время компиляции.Если вместо ACME_VERSION
вы попытаетесь определить process.env.VUE_APP_ACME_VERSION
...
, когда вы регистрируете process.env
, ключ VUE_APP_ACME_VERSION
не будет отображаться в объекте. Однако , необработанный console.log('process.env.VUE_APP_ACME_VERSION')
даст 111
, как и ожидалось.
Таким образом, в принципе, исходная ссылка и предложенные решения были в некоторой степени правильными.Однако на самом деле к объекту process
ничего не добавлялось.Я регистрировал proccess.env
во время своих первоначальных попыток, поэтому я не увидел ничего работающего.
Теперь, однако, поскольку объект process
не изменяется, я настоятельно рекомендую всем, кто пытается загрузить переменные вих VUE приложение во время компиляции, чтобы не использовать его.В лучшем случае вводит в заблуждение.