详解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 相关文章推荐
srcElement表格样式
Sep 03 Javascript
Javascript 不能释放内存.
Sep 07 Javascript
JavaScript表单常用验证集合
Jan 16 Javascript
jQuery .tmpl(), .template()学习资料小结
Jul 18 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
May 28 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
Feb 12 Javascript
JavaScript获取当前页面上的指定对象示例代码
Feb 28 Javascript
多种JQuery循环滚动文字图片效果代码
Jun 23 Javascript
jQuery获取table行数并输出单元格内容的实现方法
Jun 30 Javascript
jQuery实现两列等高并自适应高度
Dec 22 Javascript
详解Vue双向数据绑定原理解析
Sep 11 Javascript
JavaScript forEach中return失效问题解决方案
Jun 01 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
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
php统计数组元素个数的方法
2015/07/02 PHP
PHP会话处理的10个函数
2015/08/11 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
Python的Tornado框架异步编程入门实例
2015/04/24 Python
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
汉语言文学毕业生求职信
2013/10/01 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
运动员口号
2014/06/09 职场文书
部门活动策划方案
2014/08/16 职场文书
市场总监岗位职责
2015/02/11 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
毕业赠语大全
2015/06/23 职场文书