详解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 function调用时的参数检测常用办法
Feb 26 Javascript
Dojo 学习要点
Sep 03 Javascript
iframe子页面与父页面在同域或不同域下的js通信
May 07 Javascript
Jquery实现弹性滑块滑动选择数值插件
Aug 08 Javascript
Javascript闭包与函数柯里化浅析
Jun 22 Javascript
Angular 路由route实例代码
Jul 12 Javascript
详解jQuery uploadify文件上传插件的使用方法
Dec 16 Javascript
JS设计模式之数据访问对象模式的实例讲解
Sep 30 Javascript
基于vue中对鼠标划过事件的处理方式详解
Aug 22 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
Oct 30 Javascript
vue实现简单计算商品价格
Sep 14 Javascript
AJAX学习笔记
May 18 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的无限分类实现想法~
2007/01/02 PHP
php自动跳转中英文页面
2008/07/29 PHP
php合并js请求的例子
2013/11/01 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
Python类的专用方法实例分析
2015/01/09 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
Python 中的lambda函数介绍
2018/10/10 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
django中cookiecutter的使用教程
2020/12/03 Python
CSS3 实现的缩略图悬停效果
2020/12/09 HTML / CSS
视光学专业毕业生推荐信
2013/10/28 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
小学音乐课教学反思
2016/02/18 职场文书