详解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按位非运算符的使用方法
Nov 14 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
Dec 22 Javascript
javascript实现随时变化着的背景颜色
Apr 02 Javascript
三个js循环的关键字示例(for与while)
Feb 16 Javascript
weUI应用之JS常用信息提示弹层的封装
Nov 21 Javascript
微信小程序 MD5加密登录密码详解及实例代码
Jan 12 Javascript
详解基于webpack搭建react运行环境
Jun 01 Javascript
Angular4学习教程之HTML属性绑定的方法
Jan 04 Javascript
vue-router 源码之实现一个简单的 vue-router
Jul 02 Javascript
15分钟深入了解JS继承分类、原理与用法
Jan 19 Javascript
详解ES6 Promise的生命周期和创建
Aug 18 Javascript
详解ECMAScript2019/ES10新属性
Dec 06 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
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
Javascript拓展String方法小结
2013/07/08 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
详解Node 定时器
2018/02/26 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
在Python中调用ggplot的三种方法
2015/04/08 Python
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
python获取点击的坐标画图形的方法
2019/07/09 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
《和田的维吾尔》教学反思
2014/04/14 职场文书
工厂车间标语
2014/06/19 职场文书
个人投资合作协议书
2014/10/12 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
Python 阶乘详解
2021/10/05 Python
Java完整实现记事本代码
2022/06/16 Java/Android