详解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的Cookies
Jan 16 Javascript
Javascript 继承机制实例
Aug 12 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
Jul 13 Javascript
Jquery easyui 下loaing效果示例代码
Aug 12 Javascript
js定时器怎么写?就是在特定时间执行某段程序
Oct 11 Javascript
论JavaScript模块化编程
Mar 07 Javascript
深入理解JS函数的参数(arguments)的使用
May 28 Javascript
原生js封装二级城市下拉列表的实现代码
Jun 16 Javascript
详解Angular 自定义结构指令
Jun 21 Javascript
Axios学习笔记之使用方法教程
Jul 21 Javascript
js 实现ajax发送步骤过程详解
Jul 25 Javascript
移动端手指操控左右滑动的菜单
Sep 08 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 图片水印类代码
2012/08/27 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
ext读取两种结构的xml的代码
2008/11/05 Javascript
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
jQuery实现的AJAX简单弹出层效果代码
2015/11/26 Javascript
JavaScript代码判断点击第几个按钮
2015/12/13 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
2016/01/22 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
vue transition 在子组件中失效的解决
2019/11/12 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
微信小程序实现点赞业务
2021/02/10 Javascript
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
python实现字符串和日期相互转换的方法
2015/05/13 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
TensorFlow变量管理详解
2018/03/10 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
个人合伙协议书范本
2014/10/14 职场文书
创业计划书介绍
2019/04/24 职场文书
简述python四种分词工具,盘点哪个更好用?
2021/04/13 Python
golang http使用踩过的坑与填坑指南
2021/04/27 Golang
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
Python图片处理之图片裁剪教程
2021/05/27 Python