vue.js - 为生产 vue 构建提供环境变量
问题描述
我想实现以下目标:
- 一个 Vue 应用程序是用
npm build
, - 然后 /dist 结果被复制到某个环境
- 在这个环境中,我有一些带有 name=value 设置的静态设置文件
- Vue 应用程序应该从运行它的本地文件夹中读取此设置或默认为某些设置
做这个的最好方式是什么。
解决方案
如果您想向捆绑的应用程序“注入”一些设置,那么我认为只有使用另一个globalConfig.js
具有全局对象的 js 文件()才有可能,例如:
window.myAppSettings = {
MY_VARIABLE: 'some_value'
}
它将以某种方式复制到特定环境中的 dist 文件夹中。您还应该准备您的应用程序以引用该文件:
首先,将此设置对象添加为外部库
vue.config.js
module.exports = { chainWebpack: config => { config.externals({ 'my-app-settings': 'myAppSettings' }) } }
因此,您可以在代码中获取设置:
import mySettingsObject from 'my-app-settings' //... let myValue = mySettingsObject.MY_VARIABLE
在 head 部分添加对
globalConfig.js
in文件的引用:index.html
<script src="<%= BASE_URL %>globalConfig.js"></script>
地方发展
您可能需要一些默认设置才能在本地调试您的应用程序。在这种情况下,您可以localConfig.js
在public
文件夹中创建一些默认值。然后将您的脚本更改index.html
为:
<script src="<%= BASE_URL %><%= VUE_APP_GLOBAL_SETTINGS_VERSION %>Settings.js"></script>
.env.local
然后在项目根目录下创建两个文件.env.production
:
// .env.local
VUE_APP_GLOBAL_SETTINGS_VERSION=local
和
// .env.production
VUE_APP_GLOBAL_SETTINGS_VERSION=global
因此,当您运行npm run serve
它时,它将加载您的本地配置,并且您的应用程序将加载localSettings.js
. 并且当它使用它构建时npm run build
会加载globalSettings.js
,因为默认情况下构建使用生产模式。
推荐阅读
- java - 从 android 仪器测试中得到错误的屏幕尺寸
- workbox - Polymer 3 SPA 中的工作箱,得到“未定义过程”
- jenkins - Jenkins 多分支作业配置为管道作业
- sharepoint - 在 SharePoint 中创建列时文件上传不是一个选项
- cad - 带有图像到位图的 Cadlib 绘制模型
- javascript - 想要为嵌套创建正则表达式以逃避嵌套括号
- ios - UISearchController 横向布局问题
- c# - 获取旋转图像上的点击坐标
- python - xlsx 表的 reader = csv.reader(...) 的等价物是什么?
- oracle - Oracle DB 中 ENUM 列的 Liquibase 'addCheckConstraint' 允许任何字符