Vue官方脚手架分环境打包配置
1、配置各个环境所需要的使用的参数
//修改config/dev.env.js (开发环境) 'use strict' const merge = require('webpack-merge') const prodEnv = require('./prod.env') module.exports = merge(prodEnv, { NODE_ENV: '"development"',//环境类型 IS_ENCRYPTION:false,//是否加密 WS_API:'"ws://cnblogs.com/"',//websoket地址 BASE_API:'"http:cnblogs.com/"',//开发环境地址 }) //修改config/prod.env.js(生产环境) 'use strict' module.exports = { NODE_ENV: '"production"',//环境类型 IS_ENCRYPTION:true,//是否加密 WS_API:'"wss:https://cnblogs.com/"',//websoket地址 BASE_API:'"https://cnblogs.com/"'//生产环境地址 }
2、打包配置
//修改build/webpack.prod.conf.js(npm run build 时会走这个文件)
const env = process.env.NODE_ENV === 'testing' ? require('../config/test.env') : require('../config/prod.env') 改为 const env = require('../config/'+process.env.env_config+'.env') new HtmlWebpackPlugin({ filename: process.env.NODE_ENV === 'testing' ? 'index.html' : config.build.index, template: 'index.html', inject: true, minify: { removeComments: true, collapseWhitespace: true, removeAttributeQuotes: true // more options: // https://github.com/kangax/html-minifier#options-quick-reference }, // necessary to consistently work with multiple chunks via CommonsChunkPlugin chunksSortMode: 'dependency' }), 改为 new HtmlWebpackPlugin({ filename: config.build.index, template: 'index.html', inject: true, minify: { removeComments: true, collapseWhitespace: true, removeAttributeQuotes: true // more options: // https://github.com/kangax/html-minifier#options-quick-reference }, // necessary to consistently work with multiple chunks via CommonsChunkPlugin chunksSortMode: 'dependency' }),
3、本地环境配置
//修改 build/webpack.dev.conf.js(npm run start 时走这里) //引入文件 const ENV = require('../config/dev.env');//如果需要用生产环境把../config/dev.env改为../config/prod.env即可(项目需要重启才能生效) plugins: [ new webpack.DefinePlugin({ 'process.env': require('../config/dev.env') }), 改为 plugins: [ new webpack.DefinePlugin({ 'process.env': ENV }),
4、打包命令配置
//在package.json "scripts" 对象中新增以下内容 "build:prod": "cross-env NODE_ENV=production env_config=prod node build/build.js", "build:dev": "cross-env NODE_ENV=production env_config=dev node build/build.js",
5、获取配置好的全局变量
//以下变量能获取环境中的各个参数(任何文件下可使用该变量) process.env //console.log(process.env);//打印以下内容 { NODE_ENV: '"development"',//环境类型 IS_ENCRYPTION:false,//是否加密 WS_API:'"ws://cnblogs.com/"',//websoket地址 BASE_API:'"http:cnblogs.com/"',//开发环境地址 }