详解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 相关文章推荐
$.ajax json数据传递方法
Nov 19 Javascript
基于jQuery的Spin Button自定义文本框数值自增或自减
Jul 17 Javascript
Javascript中string转date示例代码
Nov 01 Javascript
javascript实现博客园页面右下角返回顶部按钮
Feb 22 Javascript
javascript格式化指定日期对象的方法
Apr 21 Javascript
Javascript中arguments对象的详解与使用方法
Oct 04 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
Jun 13 Javascript
AngularJS修改model值时,显示内容不变的实例
Sep 13 Javascript
vue中的计算属性实例详解
Sep 19 Javascript
微信小程序如何使用globalData的方法
Jun 06 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
Sep 10 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
Sep 12 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中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
护卫神php套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
2015/03/05 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
深入浅出理解javaScript原型链
2015/05/09 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
python实现爬山算法的思路详解
2019/04/09 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
基于python实现计算两组数据P值
2020/07/10 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
Structs界面控制层技术
2013/10/11 面试题
十岁生日父母答谢词
2014/01/18 职场文书
北京申奥口号
2014/06/19 职场文书
作弊检讨书
2015/01/27 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js