Webpack代理+多环境打包配置(开发,测试,预生产,生产)

一:配置proxy代理

config/index.js

module.exports = {  dev: {    assetsSubDirectory: "static",    assetsPublicPath: "/",    proxyTable: {      "/web": {        // target: "http://192.168.2.666/", // 接口域名,        target: "http://192.168.2.777:81/", // 接口域名,        // target: "http://uat.baiddu.com/api/", // 预生产域名,        // target: "https://api.baidu.com/", // 接口域名,        changeOrigin: true, //是否跨域        // logLevel:'debug',        pathRewrite: {          "^/web": "/web" //须要rewrite重写的,        }      }       },      }}

二:通过corss-env,批改相干配置,build不同环境代码

1.装置
 npm install cross-env -dev--save
2.批改各环境下的参数,在 config 目录下增加 test.env.js, uat.env.js并批改dev.env.js, prod.env.js,批改后内容如下

test.env.js

'use strict'module.exports = {  NODE_ENV: '"testing"',  env_config:'"test"',  API:'"http://192.168.2.777:81/web"'}

dev.env.js

'use strict'const merge = require('webpack-merge')const prodEnv = require('./prod.env')module.exports = merge(prodEnv, {  NODE_ENV: '"development"',  env_config:'"dev"',  API:'"/web"' })

uat.env.js

'use strict'module.exports = {  NODE_ENV: '"usertest"',  env_config:'"uat"',  API:'"http://uat.baidu.com/web"'}

prod.env.js

'use strict'module.exports = {  NODE_ENV: '"production"',  env_config:'"prod"',  API:'"https://api.bitdu.com/web"'}
3.批改 package.json 文件中的 scripts 内容.(NODE_ENV最好都设成 production,因为在 build/utils.js 只做了production 一种断定)
 "scripts": {    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",    "start": "npm run dev",    "lint": "eslint --ext .js,.vue src",    "build-test": "cross-env NODE_ENV=production env_config=test node build/build.js",    "build-uat": "cross-env NODE_ENV=production env_config=uat node build/build.js",    "build-prod": "cross-env NODE_ENV=production env_config=prod node build/build.js"  },
4.批改 config/index.js 文件中 build 参数,这里的参数会在 build/webpackage.prod.conf.js 中应用到
build: {    // Template for index.html    // 增加test  prod 环境的配制    testEnv: require('./test.env'),    uatEnv: require('./uat.env'),    prodEnv: require('./prod.env'),   }
5.对 build/webpackage.prod.conf.js 文件进行批改,调整 env 常量的生成形式。
// 共性env常量的定义// const env = require('../config/prod.env')const env = config.build[process.env.env_config+'Env']
6.批改 build/build.js 文件,删除 process.env.NODE_ENV 的赋值,批改 spinner 的定义,调整后的内容如下:
'use strict'require('./check-versions')()// 正文掉的代码// process.env.NODE_ENV = 'production'const ora = require('ora')const rm = require('rimraf')const path = require('path')const chalk = require('chalk')const webpack = require('webpack')const config = require('../config')const webpackConfig = require('./webpack.prod.conf')// 批改spinner的定义// const spinner = ora('building for production...')var spinner = ora('building for ' + process.env.NODE_ENV + ' of ' + process.env.env_config+ ' mode...' )spinner.start()
7.在网络申请处,设置baseUrl
// 设置baseURLaxios.defaults.baseURL = process.env.API
8.执行打包
npm run build-test