网站首页 > 精选文章 正文
在现代前端项目中.env文件随处可见,里面都是一些项目中的配置项,能够在项目中拿来就用,那么.env文件在前端工程化中用处和意义是什么呢?
.env文件用来指定环境变量,在Vue CLI中定义,想要了解解析环境文件规则的细节,请参考 dotenv。在Vue CLI 3.5+中也使用 dotenv-expand 来实现变量扩展。
你可以在你的项目根目录中放置下列文件来指定环境变量:
.env # 在所有的环境中被载入
.env.local # 在所有的环境中被载入,但会被 git 忽略
.env.[mode] # 只在指定的模式中被载入
.env.[mode].local # 只在指定的模式中被载入,但会被 git 忽略
env配置文件只包含环境变量的“键=值”对:
NODE_ENV=production
VUE_APP_PREVIEW=false
VUE_APP_API_BASE_URL=/api
不要在你的应用程序中存储任何机密信息(例如私有 API 密钥),环境变量会随着构建打包嵌入到输出代码,意味着任何人都有机会能够看到它。
除了 VUE_APP_ 变量之外。还有两个特殊的变量:
- NODE_ENV: 是 development、production、test 中的一个。其值取决于应用运行的模式。
- BASE_URL: 和 vue.config.js 中的 publicPath 选项相符,即你的应用会部署到的基础路径
请注意,只有 NODE_ENV,BASE_URL 和以 VUE_APP_ 开头的变量将通过 webpack.DefinePlugin 静态地嵌入到客户端侧的代码中。这是为了避免意外公开机器上可能具有相同名称的私钥。
mode
vueCli 命令中 --mode 对应的 .env.[mode],而不是 NODE_ENV
模式是 Vue CLI 项目中一个重要的概念。默认情况下,一个 Vue CLI 项目有三个模式:
- development 模式用于 vue-cli-service serve
- test 模式用于 vue-cli-service test:unit
- production 模式用于 vue-cli-service build 和 vue-cli-service test:e2e
你可以通过传递 --mode 选项参数为命令行覆写默认的模式。例如,如果你想要在构建命令中使用开发环境变量:
vue-cli-service build --mode development
运行 vue-cli-service 命令时,所有的环境变量都从对应的环境文件中载入。如果文件内部不包含 NODE_ENV 变量,它的值将取决于模式,例如,在 production 模式下被设置为 "production",在 test 模式下被设置为 "test",默认则是 "development"。
NODE_ENV
NODE_ENV 将决定您的应用运行的模式,是开发,生产还是测试,因此也决定了创建哪种 webpack 配置。
例如通过将 NODE_ENV 设置为 "test",Vue CLI 会创建一个优化过后的,并且旨在用于单元测试的 webpack 配置,它并不会处理图片以及一些对单元测试非必需的其他资源。
同理,NODE_ENV=development 创建一个 webpack 配置,该配置启用热更新,不会对资源进行 hash 也不会打出 vendor bundles,目的是为了在开发的时候能够快速重新构建。
当你运行 vue-cli-service build 命令时,无论你要部署到哪个环境,应该始终把 NODE_ENV 设置为 "production" 来获取可用于部署的应用程序。
process.env
如今的前端项目都是用 Node 来作为辅助开发工具,而 process 是 Node.js 中的 一个全局变量,提供来有关当前 Node.js 进程的信息并对其进行控制。而 process 中的 env 则是返回包含用户环境的对象。通俗点说,就是能够经过 process.env 拿到当前node进程的运行环境的信息,这里也包括.env文件里指定的环境变量,因此在node环境下可以通过如下代码获取环境变量对应的值。
const version=process.env.NODE_ENV||"development";
process.env包含着关于系统环境的信息,但是process.env中并不存在NODE_ENV这个环境变量,需要我们在配置文件中指定,NODE_ENV是一个用户自定义的变量,在webpack中它的用途是判断生产环境或开发环境。
env 文件的语法高亮显示
如果您使用 VS Code,您将需要添加dotenv 插件。这会.env通过语法突出显示来点亮文件的内容,并且只是简单地使用.env文件中的变量更容易。
参考
https://cli.vuejs.org/zh/guide/mode-and-env.html#%E6%A8%A1%E5%BC%8F
http://www.javashuo.com/article/p-mfmbbhxu-ew.html
https://www.cnblogs.com/guojikun/p/15160737.html
https://webpack.js.org/plugins/define-plugin/#usage
https://medium.com/the-node-js-collection/making-your-node-js-work-everywhere-with-environment-variables-2da8cdf6e786
猜你喜欢
- 2024-12-20 若依vue前端模块部署到tomcat
- 2024-12-20 Vue 3.2 TS 使用 Axios 对请求进行拦截及封装的实现
- 2024-12-20 SpringBoot和Vue整合打包
- 2024-12-20 vue-element-admin-fastapi
- 2024-12-20 若依框架-前端静态资源如何整合到后端访问
- 2024-12-20 好用的.env
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)