vue环境变量你知道吗?浅谈vue-cli环境变量的使用

环境变量

mode

首先要了解webpack的配置 mode 选项

mode 的值有三个 string = ‘production’: ‘none’ | ‘development’ | ‘production’

没有设置默认为 ‘production’

tip: 如果 mode 未通过配置或 CLI 赋值,CLI 将使用可能有效的 NODE_ENV 值作为 mode

process.env

使用频率很高,node服务运行时,时常会判断当前服务运行的环境:

一般情况下,我们需要针对不同环境(开发环境、测试环境、生产环境…),进行相应策略的打包

(比如是否替换接口地址BaseURL,代码是否压缩, 是否保留console)。

webpack就是通过process.env属性加以区分。

这里附一张官网的说明:

在这里插入图片描述

webpack.DefinePlugin的具体配置感兴趣的小伙伴可以去研究一下

具体 vue脚手架的环境变量使用

vue脚手架做了很多封装,有些webpack的配置都已经内置了,这里不细谈,只说使用

1 可以在项目根目录下新建或修改以下文件:

.env                # 在所有的环境中被载入
.env.local          # 在所有的环境中被载入,但会被 git 忽略
.env.[mode]         # 只在指定的模式中被载入
.env.[mode].local   # 只在指定的模式中被载入,但会被 git 忽略

2 你可以通过传递 --mode 选项参数执行脚本来覆写默认的模式。

例如:

​ 在package.json文件的 script 写入

"build:dev": "vue-cli-service build --mode development"

这样就可以打包一个 开发环境的包出来

如何自定义一些变量呢?

3 自定义环境变量 key = value

新建文件 .env.development

写入:

# just a flag
ENV = development

# base api
VUE_APP_BASE_API = http://localhost:8000/

新建文件 .env.production

写入:

# just a flag
ENV = production

# base api
VUE_APP_BASE_API = http://localhost:6000/

这样你就会出现两个不同环境配置的文件

里面的变量如果使用了,将会在项目构建时替换对应的引用地方

通过 process.env.VUE_APP_BASE_API 的方式使用

例如,我想要在vue.config.js中动态设置反向代理

vue.config.js 写入:

devServer: {
    proxy: { // 反向代理
      '/api': {
        target: process.env.VUE_APP_BASE_API,
        pathRewrite: {
          '^/api': ''
        },
        logLevel: 'debug', // 可以在终端窗口看到真实代理地址 
      }
    }
  }

终端运行 (也可以写入package的script里 这样就不用加npx 直接终端 npm run xxx)

npx vue-cli-service serve --mode production

npx vue-cli-service serve (这个也可以直接跑开发的脚本命令 npm run serve)

分别运行 去观察代理服务器的不同
请添加图片描述

其余的开发文件 src目录下的所有文件 也都是这样使用 process.env.xxxx

如 axios的配置 一些生产和开发不同文件的显示隐藏 都可以通过环境变量控制

vue-cli 官方文档地址环境变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值