详解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 相关文章推荐
用JavaScript和注册表脚本实现右键收藏Web页选中文本
Jan 28 Javascript
js Dialog 去掉右上角的X关闭功能
Apr 23 Javascript
通过JS动态创建一个html DOM元素并显示
Oct 15 Javascript
简介JavaScript中setUTCSeconds()方法的使用
Jun 12 Javascript
js实现全国省份城市级联下拉菜单效果代码
Sep 07 Javascript
JS实现3D图片旋转展示效果代码
Sep 22 Javascript
AngularJS封装指令方法详解
Dec 12 Javascript
JS前端笔试题分析
Dec 19 Javascript
浅谈angular4 ng-content 中隐藏的内容
Aug 18 Javascript
浅谈AngularJS中使用$resource(已更新)
Sep 14 Javascript
javascript json对象小技巧之键名作为变量用法分析
Nov 11 Javascript
详解js location.href和window.open的几种用法和区别
Dec 02 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
PHP Mysql编程之高级技巧
2008/08/27 PHP
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
php文件系统处理方法小结
2016/05/23 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
机器学习10大经典算法详解
2017/12/07 Python
Python3连接SQLServer、Oracle、MySql的方法
2018/06/28 Python
python 输出所有大小写字母的方法
2019/01/02 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
教师求职信范文
2014/05/24 职场文书
党建工作汇报材料
2014/12/24 职场文书
单位实习鉴定评语
2015/01/04 职场文书
以权谋私检举信范文
2015/03/02 职场文书
2015年加油站工作总结
2015/05/13 职场文书
大学生社会服务心得体会
2016/01/22 职场文书