项目背景

为了适应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'
} })

  

现在分别执行 npm run dev、npm run build --qa 和 npm run build --prod 就可以得到想要的结果了

CROSS-ENV不同环境配置的更多相关文章

  1. Lavarel之环境配置 .env

    .env 文件位于项目根目录下,作为全局环境配置文件. 1. 配置参数 // 运行环境名称 APP_ENV=local // 调试模式,开发阶段启用,上线状态禁用. APP_DEBUG=true // ...

  2. Electron的环境配置

    原文地址http://huisky.com/blog/161218121551123 本文介绍了Electron的环境配置,包括Electron下载.nodejs下载安装.NPM+Bower安装配置. ...

  3. 前端自动化测试 —— TDD环境配置(React+TypeScript)

    欢迎讨论与指导:) 前言 TDD -- Test-Drive Development是测试驱动开发的意思,是敏捷开发中的一项核心实践和技术,也是一种测试方法论.TDD的原理是在开发功能代码之前,先编写 ...

  4. Mac下golang开发环境配置

    go语言在开发效率和运行效率中的优势让很多人青睐,所以有倾向打算转向go语言的开发. 下面介绍在Mac OS X中golang的开发环境配置. 1.安装brew brew是一个mac下的由ruby开发 ...

  5. Mac系统搭建Go语言Sublime Text 2环境配置

    Go语言是谷歌自家的编译型语言,旨在不损失性能的前提下降低代码复杂率.其优势是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦. 一.安装Golang的SDK 在官网http: ...

  6. 解决laravel中环境配置不起作用的方法

    博客已经迁移到www.imyzf.com,本站不再更新,请谅解! laravel有个环境配置选项很好用,在bootstrap/start.php中,曾经百度到这里面加入域名,就可以自动选择环境 $en ...

  7. Spring环境配置

    研究spring3的时候发现一个非常好用的特性:环境配置(spring2是否有此特性未知) 官方演示样例代码例如以下: <!-- app-config.xml --> <beans ...

  8. 手把手教你webpack、react和node.js环境配置(上篇)

    很多人刚学习react的时候,往往因为繁琐的配置而头疼,这里我将手把手教大家怎么用webpack配置react和redux的环境,这篇教程包括前端react和后台node整个网站的环境配置,对node ...

  9. webpack开发与生产环境配置

    前言 作者去年就开始使用webpack, 最早的接触就来自于vue-cli.那个时候工作重点主要也是 vue 的使用,对webpack的配置是知之甚少,期间有问题也是询问大牛 @吕大豹.顺便说一句,对 ...

  10. webpack开发环境配置和生产环境配置

    开发环境配置 在开发环境下,我们首先考虑的是方便开发,方便代码调试,不需要考虑代码合并和css样式分离这些. 这里主要说三个 :1.css模块化:2.模块热替换功能:3.source-map(代码映射 ...

随机推荐

  1. vscode启动黑屏

    今天打开vscode的时候突然就黑屏了,一脸懵 于是上网找了一下,根据这位博主的解决办法: https://blog.csdn.net/insgo/article/details/102975986 ...

  2. HTML5的一些验证挺方便的

    一些基本的验证都可以很简单的实现,节省了很多繁琐的步骤.

  3. MySQL 库、表、记录、相关操作(2)

    库.表.记录.相关操作(2) 字段操作 create table tf1( id int primary key auto_increment, x int, y int ); # 修改 alter ...

  4. Linux:AWK基础

    AWK是一个强大的文本分析工具,算是Linux系统特别有用的命令了,在日志分析.文件内容分析中扮演特别重要的角色. AWK说明 简单来说awk就是把文件逐行的读入,以指定的分隔符将每行分割,分割后的部 ...

  5. num += num 与 num = num+ num

    a = 100def test(num): num += num print(num) test(a)print(a) 200100 这里 num += num 与 num = num+ num 不能 ...

  6. ThinkPHP5——安装验证码和使用

    1.使用composer安装验证码 首先要安装composer,大部分“composer require topthink/think-captcha”命令无法运行或者提示不是内部文件或可执行命令,都 ...

  7. gdb调试常用方法介绍

    一.概述   GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.没有统一的界面,所有的操作都是通过命令的方式进行提供.对于习惯了图形界面方式进行调试的猿猿来说可能不是很顺手,但是如果你在 ...

  8. gitbook 入门教程之自定义不一样的多语言首页插件

    自定义多语言主页 中文 | English

  9. iOS开发动画(Animation)总结

    UIView的,翻转.旋转,偏移,翻页,缩放,取反的动画效果   翻转的动画 //开始动画 [UIView beginAnimations:@"doflip" context:ni ...

  10. 2017 ACM/ICPC 沈阳 F题 Heron and his triangle

    A triangle is a Heron’s triangle if it satisfies that the side lengths of it are consecutive integer ...