详解vue.js根据不同环境(正式、测试)打包到不同目录
1、在build文件夹中创建testing.js文件
//配置环境变量type为testing process.env.type='"testing"' //引入build.js文件 require('./build')
2、修改config文件夹中的prod.env.js文件
module.exports={ NODE_ENV:'"production"', //将上文设置的环境变量,赋值到type属性上 type:process.env.type }
3、在package.json文件中添加npmruntesting命令
"testing":"nodebuild/testing.js",//添加testing命令 "build":"nodebuild/build.js"
4、config->index.js中把build这个命令复制一份改成testing(此步为了打包到不同文件夹)
build:{ env:require('./prod.env'), //Templateforindex.html index:path.resolve(__dirname,'../dist/index.html'), //Paths assetsRoot:path.resolve(__dirname,'../dist'), assetsSubDirectory:'static', assetsPublicPath:'/mshop/', /** *SourceMaps */ productionSourceMap:true, //https://webpack.js.org/configuration/devtool/#production devtool:'#source-map', //Gzipoffbydefaultasmanypopularstatichostssuchas //SurgeorNetlifyalreadygzipallstaticassetsforyou. //Beforesettingto`true`,makesureto: //npminstall--save-devcompression-webpack-plugin productionGzip:false, productionGzipExtensions:['js','css'], //Runthebuildcommandwithanextraargumentto //Viewthebundleanalyzerreportafterbuildfinishes: //`npmrunbuild--report` //Setto`true`or`false`toalwaysturnitonoroff bundleAnalyzerReport:process.env.npm_config_report }, testing:{ env:require('./prod.env'), index:path.resolve(__dirname,'../testing/index.html'), assetsRoot:path.resolve(__dirname,'../testing'), assetsSubDirectory:'static', assetsPublicPath:'/', productionSourceMap:true, //Gzipoffbydefaultasmanypopularstatichostssuchas //SurgeorNetlifyalreadygzipallstaticassetsforyou. //Beforesettingto`true`,makesureto: //npminstall--save-devcompression-webpack-plugin productionGzip:false, productionGzipExtensions:['js','css'], //Runthebuildcommandwithanextraargumentto //Viewthebundleanalyzerreportafterbuildfinishes: //`npmrunbuild--report` //Setto`true`or`false`toalwaysturnitonoroff bundleAnalyzerReport:process.env.npm_config_report },
5、修改build->webpack.prod.conf文件
修改filename
newHtmlWebpackPlugin({ filename:process.env.type=='"testing"'?config.testing.index:config.build.index }),
修改output
output:{ path:process.env.type=='"testing"'?config.testing.assetsRoot:config.build.assetsRoot, },
6、修改build->build.js文件
路径都修改为根据正式、测试环境判断(不然执行npmruntesting,npmrunbuild命令时输出的文件有问题)
rm(path.join(process.env.type=='"testing"'?config.testing.assetsRoot:config.build.assetsRoot,process.env.type=='"testing"'?config.testing.assetsSubDirectory:config.build.assetsSubDirectory),err=>{
7、根据不同环境配置不同域名地址
letbaseURL if(process.env.NODE_ENV==='production'){ if(process.env.type==='testing'){//测试环境 baseUrl='测试环境地址' }else{//正式环境 baseUrl='正式环境地址' } }else{//本地环境 baseUrl='本地环境地址' }
最后执行:
npmruntesting就会执行测试环境配置的地址,并生成testing文件夹
npmrunbuild就会执行正式环境配置的地址,并生成dist文件夹
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。