详解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 相关文章推荐
用js判断浏览器是否是IE的比较好的办法
May 08 Javascript
关于__defineGetter__ 和__defineSetter__的说明
May 12 Javascript
javascript基于DOM实现省市级联下拉框的方法
May 14 Javascript
JS实现左右拖动改变内容显示区域大小的方法
Oct 13 Javascript
详解javascript数组去重问题
Nov 06 Javascript
Angular ng-repeat 对象和数组遍历实例
Sep 14 Javascript
10个在JavaScript开发中常遇到的BUG
Dec 18 Javascript
AngularJS ui-router刷新子页面路由的方法
Jul 23 Javascript
vue 弹框产生的滚动穿透问题的解决
Sep 21 Javascript
微信小程序左滑删除功能开发案例详解
Nov 12 Javascript
JS实现图片拖拽交换效果
Nov 30 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
Jun 22 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 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
学习php笔记 字符串处理
2010/10/19 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
Pandas之排序函数sort_values()的实现
2019/07/09 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
安全资金保障制度
2014/01/23 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
春风化雨观后感
2015/06/11 职场文书
css3 文字断裂效果
2022/04/22 HTML / CSS