package.json中scripts配置环境变量区分开发环境和生产环境

有时候打包时要区分打生产环境的包还是开发环境的包,这样判断需要用哪个baseurl或者其他变量

 

方法1:

//windows操作系统下:
"builddev": "set NODE_ENV=dev&&vue-cli-service build",
"buildprod": "set NODE_ENV=prod&&vue-cli-service build",

//mac操作系统下:
"builddev": "export NODE_ENV=dev&&vue-cli-service build",
"buildprod": "export NODE_ENV=prod&&vue-cli-service build",

方法2:

先安装依赖: npm install --save-dev cross-env

然后配置兼容windows和mac环境的

"builddev": "cross-env NODE_ENV=dev vue-cli-service build",
"buildprod": "cross-env NODE_ENV=prod vue-cli-service build",

最后在js代码中就可以通过:process.env.NODE_ENV获取到对应的值,用于判断环境:

baseurl:process.env.NODE_ENV==='prod'?'http://prod.api.com':'http://test.api.com'

console.log(process.env);  // {BASE_URL: "",NODE_ENV: "prod"}

ps:这里用的是vue-cli配置NODE_ENV,别的项目可能是要配置WEBPACK_ENV,直接替换即可,然后console.log(process.env)查看环境

 

方法3(推荐,只适用于vue-cli):

配置vuecli的环境变量,在项目根目录新建.env.dev文件,内容为:

NODE_ENV=production
VUE_APP_ENV=dev

再新建一个.env.production,内容为:

NODE_ENV=production
VUE_APP_ENV=production

package.json中scripts内配置:

"builddev": "vue-cli-service build --mode dev",
"buildprod": "vue-cli-service build --mode production",

然后判断环境变量得到对应的baseurl值:    baseurl:process.env.VUE_APP_ENV==='production'?'http://prod.api.com':'http://test.api.com'

推荐原因:这样配置不会使打包文件体积增大,前面的方式打包后的文件都比较大,因为不是生产环境,代码不会压缩,警告和提示语也被打包进去了等等,这些都是不适合生产环境的

注意文件中NODE_ENV=production要加上,不然NODE_ENV就是默认的开发环境,值为delelopment

环境变量设置参考:官方文档

 

设置结果:

没有设置NODE_ENV=production 

设置了NODE_ENV=production

上图对比,可以看到文件体积明显减小.

 

开启gzip压缩进一步减小压缩体积可查看:https://blog.csdn.net/bamboozjy/article/details/110382737

 

### 配置 `package.json` 文件以区分生产环境开发环境 在项目构建工具中,通过配置不同的脚本来区分生产环境开发环境是一种常见做法。对于基于 Vue CLI 的项目,在 `package.json` 中可以定义特定于环境的任务来实现这一点。 #### 定义不同环境下的启动服务命令 为了适应多种部署场景,可以在 `scripts` 节点下指定多个构建指令: ```json { "scripts": { "serve": "vue-cli-service serve --mode development", "build": "vue-cli-service build --mode production" } } ``` 上述代码展示了如何为服务端口分配两个主要操作:一个是用于本地调试的服务命令[^5],另一个则是针对生产的构建过程[^1]。 #### 自定义构建命令支持更多环境选项 除了标准的开发(`development`) 生产 (`production`) 模式外,还可以创建额外的自定义模式以便更好地管理其他类型的环境,例如测试环境: ```json { "scripts": { ... "build:test": "cross-env NODE_ENV=test UNI_PLATFORM=h5 vue-cli-service uni-build", "build:prod": "cross-env NODE_ENV=production UNI_PLATFORM=h5 vue-cli-service uni-build" } } ``` 这里引入了一个新的 `test` 环境,并且利用了 `cross-env` 工具来跨平台设置环境变量[^3]。这允许开发者根据实际需求灵活调整应用行为而无需修改源码逻辑。 #### 使用 `.env` 文件进一步细化环境差异 除了直接在 `package.json` 中硬编码环境参数之外,推荐的做法是借助 `.env` 文件系列(`.env.development`, `.env.production` 等),这些文件能够更方便地管理维护各个环境中特有的配置项。 ```bash # .env.development VUE_APP_API_URL=http://localhost:8080/api/ # .env.production VUE_APP_API_URL=https://api.example.com/ ``` 这种方式不仅简化了多环境间的切换流程,同时也提高了项目的可移植性安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值