java代码判断当前开发环境_业务代码如何判断生产/开发环境

开发环境和生产环境分离的原因

在开发时,会产生 debug 或者是测试的代码,这些代码不应该出现在生产环境中。当项目部署时,往往会将代码进行一系列的压缩来优化它,如此会彻底破坏代码的可读性。本地开发往往使用的是本地 mock 的数据,而正是上线后用的是真实数据。以上几点,开发环境和生产环境必须得分离。

比如我想让项目根据不同的环境登录不同的地址。本地开发登录的是localhost,测试环境登录的是test地址,上线环境登录的是online地址。那么业务代码里如何判断生产开发测试环境呢?

方案一 将环境变量配置到 package.json

// package.json

{

// npm install cross-env

// 因为mac和windows设置命令环境变量的命令不一致, 所以用cross-env来做兼容

"script": {

"dev": "cross-env NODE_ENV=dev webpack --progress --colors",

"production": "cross-env NODE_ENV=production webpack --progress --colors"

}

}

// npm run dev // 开发

// npm run production // 生产

那么 package.json 的 script中的参数, webpack文件中如何读取呢?

在 webpack 中, 可通过 process.env.NODE_ENV获取到变量

// webpack 下

plugins: [

new webpack.DefinePlugin({

'process.env': {

NODE_ENV: JSON.stringify(process.env.NODE_ENV)

}

})

]

为什么需要加上JSON.stringify, 因为webpack 打包的时候对变量做替换会将 process.env.NODE_ENV 替换成 production, 而我们期望的是 'production'

有个问题,new webpack.DefinePlugin 定义的全局变量是 在编译时可以配置的全局常量。,那么,如何在 webpack config 文件中使用 process.env.NODE_ENV呢?

就是上面的回答,在脚本中设置变量 并且用上cross-env。 因此经常两者结合使用。

方案二:

使用process.env.npm_lifecycle_event 这个参数来辨别开发环境。

npm 提供一个 npm_lifecycle_event 变量,返回当前正在运行的脚本名称

这个方法极为简单。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值