详解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 相关文章推荐
Fastest way to build an HTML string(拼装html字符串的最快方法)
Aug 20 Javascript
图片在浏览器中底部对齐 解决方法之一
Nov 30 Javascript
基于jquery的文章中所有图片width大小批量设置方法
Aug 01 Javascript
json字符串之间的相互转换示例代码
Aug 21 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
Nov 03 Javascript
AngularJS下$http服务Post方法传递json参数的实例
Mar 29 Javascript
vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错
Nov 06 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
May 13 Javascript
ES10的13个新特性示例(小结)
Sep 23 Javascript
vue+elementUI组件table实现前端分页功能
Nov 15 Javascript
Vue 一键清空表单的实现方法
Feb 07 Javascript
JavaScript中展开运算符及应用的实例代码
Jan 14 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中include()与require()的区别说明
2010/03/10 PHP
elgg 获取文件图标地址的方法
2010/03/20 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
PHP文件上传原理简单分析
2011/05/29 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
Python使用Supervisor来管理进程的方法
2015/05/28 Python
详解Python字符串对象的实现
2015/12/24 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
就业意向书范文
2014/04/01 职场文书
理想演讲稿范文
2014/05/21 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
会计岗位职责
2015/02/03 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
新学期开学标语2015
2015/07/16 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书