详解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 相关文章推荐
excel操作之Add Data to a Spreadsheet Cell
Jun 12 Javascript
javascript 图片上一张下一张链接效果代码
Mar 12 Javascript
自用js开发框架小成 学习js的朋友可以看看
Nov 16 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
Apr 12 Javascript
jQuery中slideUp()方法用法分析
Dec 24 Javascript
JQuery实现防止退格键返回的方法
Feb 12 Javascript
javascript 开发之百度地图使用到的js函数整理
May 19 Javascript
Vue.js如何实现路由懒加载浅析
Aug 14 Javascript
探究react-native 源码的图片缓存问题
Aug 24 Javascript
js操作table中tr的顺序实现上移下移一行的效果
Nov 22 Javascript
JS定义函数的几种常用方法小结
May 23 Javascript
微信小程序如何加载数据库真实数据的实现
Mar 04 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
PHP大小写问题:函数名和类名不区分,变量名区分
2013/06/17 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
用javascript实现自定义标签
2007/05/08 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
[01:33:59]真人秀《加油 DOTA》 第六期
2014/09/09 DOTA
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
Python中的闭包总结
2014/09/18 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
Linux中如何用命令创建目录
2016/12/02 面试题
《油菜花开了》教学反思
2014/02/22 职场文书
2014年教师节寄语
2014/04/03 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
护理工作个人总结
2015/03/03 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
详解Laravel服务容器的优势
2021/05/29 PHP
Windows server 2012搭建FTP服务器
2022/04/29 Servers