详解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鼠标和滚轮事件
Jun 27 Javascript
javascript 自定义回调函数示例代码
Sep 26 Javascript
Javascript中的arguments与重载介绍
Mar 15 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
Dec 15 Javascript
jQuery表格插件datatables用法汇总
Mar 29 Javascript
jQuery扩展+xml实现表单验证功能的方法
Dec 25 Javascript
高效的jQuery代码编写技巧总结
Feb 22 Javascript
提高JavaScript执行效率的23个实用技巧
Mar 01 Javascript
js实现文字列表无缝滚动效果
Jun 23 Javascript
vue中组件的过渡动画及实现代码
Nov 21 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
Dec 11 Javascript
工作中常用js功能汇总
Nov 07 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
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
php解析json数据实例
2014/08/19 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
Vue watch响应数据实现方法解析
2020/07/10 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
Python超越函数积分运算以及绘图实现代码
2019/11/20 Python
python序列化与数据持久化实例详解
2019/12/20 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
Python 爬虫的原理
2020/07/30 Python
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
收银员的岗位职责范本
2014/02/04 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
大型活动组织方案
2014/05/10 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
2015大学生实训报告
2014/11/05 职场文书
刑事辩护词范文
2015/05/21 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
数据库之SQL技巧整理案例
2021/07/07 SQL Server
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技