前端月入过万必看

CROSS-ENV不同环境配置

项目背景
为了适应h5环境搭建需求,需要动态配置开发,测试,生产三种对应域名及其及打包命令。使用cross-env可以让配置环境更加清晰明了还好管理。

简介
cross-env的作用是不需要全局配置NODE_ENV在scripts脚本中修改NODE_ENV的值从而实现不同环境中proccess.env.NODE_ENV的不同,而config的工作原理就是基于NODE_ENV这个值的,所以推荐两者结合使用。

安装 cross-env

npm install --save-dev cross-env

使用
npm run dev 打包的是开发环境
npm run build–qa 打包的是测试环境
npm run build–prod 打包的是生成环境

“dev”:“cross-env NODE-ENV=development node build/webpack.deb.conf.js”

“build --qa”:“cross-env NODE_ENV=testing node build/build.js”
“build --prod”:“cross-env NODE_ENV=production node build/build.js”

修改config里面的参数,如下是环境的配置信息,注意NODE_ENV里的配置名称与打包命令的相一致:

//dev环境
module.exports = {
  NODE_ENV: '"development"',
  BASE_API: 'http://10.250.115.99/statistics' //代理路径
}
//测试环境
module.exports = {
  NODE_ENV: '"testing"',
  BASE_API: 'http://10.250.115.99/statistics' //代理路径
}
 //生产环境
 module.exports = {
   NODE_ENV: '"production"',
   BASE_API: 'http://ai.iteldrive.com/statistics' //代理路径
 }

修改config/index.js (注意新增prodEnv、testEnv)

'use strict'
const path = require('path')
 
module.exports = {
  build: {
    prodEnv: require('./prod.env'),
    testEnv: require('./test.env'),
    index: path.resolve(__dirname, '../dist/index.html'),
    assetsRoot: path.resolve(__dirname, '../dist'),
    assetsSubDirectory: 'static',
    assetsPublicPath: './',
    productionSourceMap: true,
    devtool: '#source-map',
    productionGzip: false,
    productionGzipExtensions: ['js', 'css'],
    bundleAnalyzerReport: process.env.npm_config_report
  }
}

在webpackage.prod.conf.js中配置构建环境参数

const env = process.env.NODE_ENV === 'testing'
  ? require('../config/test.env')
  : require('../config/prod.env')

调整build/build.js

var spinner = ora('building for ' + process.env.NODE_ENV + '...')
spinner.start()

  以上步骤配置完毕之后,重启npm run build–qa,此时就会发现运行测试环境的代码已经打包生成好了(dist目录),问题是环境配好了,怎么配置不用环境的api呢?

配置不同环境api,根据匹配NODE_ENV的不同的值

let API_URL
if (process.env.NODE_ENV === 'development') {
  API_URL = 'http://10.250.115.99/statistics'
} else if (process.env.NODE_ENV === 'production') { // 测试环境
  API_URL = 'http://ai.iteldrive.com/statistics'
} else if (process.env.NODE_ENV === 'testing') {
  API_URL = 'http://10.250.115.99/statistics'
} else {
  API_URL = 'http://ai.iteldrive.com/statistics'
}
//console.log(API_URL + '请求api************')
const http = axios.create({
  baseURL: API_URL, // api的base_url,
  timeout: 1000 * 30,
  withCredentials: true,
  headers: {
    'Content-Type': 'application/json; charset=utf-8'
  }
})
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不是费圆

文章都是免费开源的,不用打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值