首页 > 语言 > JavaScript > 正文

详解webpack+gulp实现自动构建部署

2024-05-06 15:15:09
字体:
来源:转载
供稿:网友

webpack系列目录

webpack 系列 二:webpack 介绍&安装

webpack 系列 三:webpack 如何集成第三方js库

webpack 系列 四:webpack 多页面支持 & 公共组件单独打包

webpack 系列 五:webpack Loaders 模块加载器

webpack 系列 六:前端项目模板-webpack+gulp实现自动构建部署

正文

本篇包含以下三点:

1.区分开发环境和生产环境

2.集成gulp

3.package.json 配置

前面主要介绍了webpack 的一些基础用法,该篇做一个整体介绍,如何集成gulp?如何应对多部署环境?

项目结构说明

 . ├── gulpfile.js    # gulp任务配置 ├── mock/      # 假数据文件 ├── package.json    # 项目配置 ├── README.md     # 项目说明 ├── src      # 源码目录 │ ├── pageA.html    # 入口文件a │ ├── pageB.html    # 入口文件b │ ├── pageC.html    # 入口文件c │ ├── css/     # css资源 │ ├── img/     # 图片资源 │ ├── js     # js&jsx资源 │ │ ├── pageA.js    # a页面入口 │ │ ├── pageB.js    # b页面入口 │ │ ├── pageC.js    # c页面入口 │ │ ├── helpers/   # 业务相关的辅助工具 │ │ ├── lib/    # 没有存放在npm的第三方库或者下载存放到本地的基础库,如jQuery、Zepto等 │ │ └── utils/   # 业务无关的辅助工具 │ ├── scss/     # scss资源 │ ├── pathmap.json   # 手动配置某些模块的路径,可以加快webpack的编译速度 ├── webpack.config.allinone.js # webpack配置 ├── webpack.config.js   # 正式环境webpack配置入口 └── webpack-dev.config.js  # 开发环境webpack配置入口

一:区分 dev环境 和 生产环境

重命名 webpack.config.js => webpack.config.allinone.js

内容上,新增options参数,利用options.debug 来控制webpack参数,用来区分开发和生产环境。例如开发环境不需要混淆和压缩js文件,但是开发环境需要。通过option.debug来区分选择相应的loader配置和Plugin:

module.exports = function(options){ options = options || {} var debug = options.debug !==undefined ? options.debug :true; ......  if(debug){  //  }else{  // }

新增webpack.config.js webpack-dev.config.js

//webpack.config.js'use strict';var webpack_config = require('./webpack.config.allinone') module.exports = webpack_config({debug:false})//webpack-dev.config.js'use strict';var webpack_config = require('./webpack.config.allinone') module.exports = webpack_config({debug:true})

后续可以根据gulp 指令 动态选择 是开发环境还是测试环境,具体见gulpfile.js

//用于gulp传递参数var minimist = require('minimist');var knownOptions = { string: 'env', default: {env: process.env.NODE_ENV || 'production'}};var options = minimist(process.argv.slice(2), knownOptions);var webpackConf = require('./webpack.config');var webpackConfDev = require('./webpack-dev.config');var _conf = options.env === 'production' ? webpackConf : webpackConfDev;webpack(_conf, function (err, stats) {......            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选