详解vue.js根据不同环境(正式、测试)打包到不同目录


Posted in Javascript onJuly 13, 2018

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文件中添加npm run testing命令

"testing": "node build/testing.js", // 添加testing命令
"build": "node build/build.js"

4、config ->index.js中把build这个命令复制一份改成testing(此步为了打包到不同文件夹)

build: {
  env: require('./prod.env'),
  // Template for index.html
  index: path.resolve(__dirname, '../dist/index.html'),

  // Paths
  assetsRoot: path.resolve(__dirname, '../dist'),
  assetsSubDirectory: 'static',
  assetsPublicPath: '/mshop/',

  /**
   * Source Maps
   */

  productionSourceMap: true,
  // https://webpack.js.org/configuration/devtool/#production
  devtool: '#source-map',

  // Gzip off by default as many popular static hosts such as
  // Surge or Netlify already gzip all static assets for you.
  // Before setting to `true`, make sure to:
  // npm install --save-dev compression-webpack-plugin
  productionGzip: false,
  productionGzipExtensions: ['js', 'css'],

  // Run the build command with an extra argument to
  // View the bundle analyzer report after build finishes:
  // `npm run build --report`
  // Set to `true` or `false` to always turn it on or off
  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,
  // Gzip off by default as many popular static hosts such as
  // Surge or Netlify already gzip all static assets for you.
  // Before setting to `true`, make sure to:
  // npm install --save-dev compression-webpack-plugin
  productionGzip: false,
  productionGzipExtensions: ['js', 'css'],
  // Run the build command with an extra argument to
  // View the bundle analyzer report after build finishes:
  // `npm run build --report`
  // Set to `true` or `false` to always turn it on or off
  bundleAnalyzerReport: process.env.npm_config_report
 },

5、修改build->webpack.prod.conf文件

修改filename

new HtmlWebpackPlugin({

   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文件

路径都修改为根据正式、测试环境判断(不然执行npm run testing, npm run build命令时输出的文件有问题)

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、根据不同环境配置不同域名地址

let baseURL
if (process.env.NODE_ENV === 'production') {
 if (process.env.type === 'testing') { // 测试环境
  baseUrl = '测试环境地址'
 } else {               // 正式环境
  baseUrl = '正式环境地址'
 }
} else {                // 本地环境
 baseUrl = '本地环境地址'
}

最后执行:

npm run testing 就会执行测试环境配置的地址,并生成testing文件夹
npm run build就会执行正式环境配置的地址,并生成dist文件夹

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS提交并解析后台返回的XML的代码
Nov 03 Javascript
js 绑定带参数的事件以及手动触发事件
Apr 27 Javascript
dotopAlert 提示用户需安装播放器的代码
Sep 17 Javascript
js实现大转盘抽奖游戏实例
Jun 24 Javascript
Node.js的Koa框架上手及MySQL操作指南
Jun 13 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
Sep 19 Javascript
基于angular实现三级联动的生日插件
May 12 Javascript
jQuery开源组件BootstrapValidator使用详解
Jun 29 jQuery
微信小程序动态增加按钮组件
Sep 14 Javascript
Angular6使用forRoot() 注册单一实例服务问题
Aug 27 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 Javascript
关于ES6尾调用优化的使用
Sep 11 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
Jul 13 #Javascript
vue实现组件之间传值功能示例
Jul 13 #Javascript
微信小程序仿微信运动步数排行(交互)
Jul 13 #Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
Jul 13 #jQuery
微信小程序中使用ECharts 异步加载数据实现图表功能
Jul 13 #Javascript
JS实现select选中option触发事件操作示例
Jul 13 #Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
Jul 13 #Javascript
You might like
php中curl使用指南
2015/02/05 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
PHP多文件上传实例
2015/07/09 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
使用socket.io实现简单聊天室案例
2018/01/02 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
layui button 按钮弹出提示窗口,确定才进行的方法
2019/09/06 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
[14:03]2017DOTA2亚洲邀请赛开幕式:12神兵演绎水墨中华
2017/04/01 DOTA
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
python中lambda()的用法
2017/11/16 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
2015/01/01 HTML / CSS
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
音乐器材管理制度
2014/01/31 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
装修协议书范本
2014/04/21 职场文书
ktv筹备计划书
2014/05/03 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
Go语言实现Snowflake雪花算法
2021/06/08 Golang