gulp实战(1)
来源:互联网 发布:棋牌源码论坛 编辑:程序博客网 时间:2024/06/06 06:33
原码目录:src
打包目录:build
JS文件目录:src/js
目标:src 中的 JS 文件是未压缩的,打包至 build 目录后,生成 min.js 后缀的压缩文件
分析:
- 打包时,build目录中可能已经存在上一次打包生成的旧文件,所以每次打包都应该先清理掉。
- 打包时需要执行压缩操作
- 打包时需要执行文件更名操作,比如:app.js 压缩后的文件名应该为 app.min.js
- 打包后,每次修改 src 目录下的 JS 文件,应该即时将修改部分重新打包
- 打包时的执行顺序为:清理 -> 打包 -> 监控修改,而且后一步必须在前一步操作完成后才可以执行。
第一步:设置变量
var config = { src: "src", dest: "build"}
第二步:清理,涉及插件 [ pump, gulp-clean ]
gulp-clean:清理文件及文件夹
/** * 清理目标目录 */gulp.task('clean', function(cb) { pump([ gulp.src(config.dist), clean() ], cb)})
第三步:执行文件操作,涉及插件 [ pump, gulp-rename, gulp-uglify, gulp-sourcemaps, gulp-changed]
gulp-rename: 更改文件名
gulp-uglify: 压缩JS文件
gulp-sourcemaps:生成sourceMap
gulp-changed: 只传递更改过的文件
/** * 执行JS压缩 */gulp.task('minify:js', [], function(cb) { pump([ // 获取原目录下所有的js文件 gulp.src(config.src + "/**/*.js"), // 执行更名操作 rename({ suffix: '.min' }), // 每次打包时,只打包内容发生改变的文件 changed(config.dist, { extension:'.js' }), // 生成sourcemap,需要配合后面的sourcemaps.write() sourcemaps.init(), // 执行JS压缩 uglify(), // 生成sourcemap sourcemaps.write(), // 输出至目标目录 gulp.dest(config.dist) ], cb);});
第四步:监听文件变更
删除文件时似乎并不能被监听到
/** * 监听JS文件变改,即时调用任务执行JS增量打包 */gulp.task('watch', [], function(cb) { gulp.watch(config.src + "/**/*.js", ['minify:js']);});
第五步:安排执行顺序,涉及插件 [ run-sequence ]
run-sequence:任务同步
/** * 开始执行 */gulp.task('default', function(cb) { sequence('clean', 'minify:js', 'watch', cb);});
完整版文档
var gulp = require('gulp'), clean = require('gulp-clean'), uglify = require('gulp-uglify'), rename = require('gulp-rename'), changed = require('gulp-changed'), sourcemaps = require('gulp-sourcemaps'), pump = require('pump'), sequence = require('run-sequence');var config = { src: "src", dist: "build"}/** * 清理目标目录 */gulp.task('clean', function(cb) { pump([ gulp.src(config.dist), clean() ], cb)})/** * 执行JS压缩 */gulp.task('minify:js', [], function(cb) { pump([ // 获取原目录下所有的js文件 gulp.src(config.src + "/**/*.js"), // 执行更名操作 rename({ suffix: '.min' }), // 每次打包时,只打包内容发生改变的文件 changed(config.dist, { extension:'.js' }), // 生成sourcemap,需要配合后面的sourcemaps.write() sourcemaps.init(), // 执行JS压缩 uglify(), // 生成sourcemap sourcemaps.write(), // 输出至目标目录 gulp.dest(config.dist) ], cb);});/** * 监听JS文件变改,即时调用任务执行JS增量打包 */gulp.task('watch', [], function(cb) { gulp.watch(config.src + "/**/*.js", ['minify:js']);});/** * 开始执行 */gulp.task('default', function(cb) { sequence('clean', 'minify:js', 'watch', cb);});
阅读全文
0 0
- gulp实战(1)
- 实战gulp
- Gulp配置实战
- gulp实战(2)
- gulp实战(3)
- gulp实战(4)
- gulp实战(5)
- 实战演练:用gulp 构建前端页面(1)---静态构建
- 实战演练:用gulp+webpack构建用户登录(1)
- 前端速学成财:第十一课-实战演练:用gulp 构建前端页面(1)---静态构建
- 前端速学成财:第十四课-实战演练:用gulp+webpack构建用户登录(1)
- 前端工程之构建工具-gulp实战
- 前端打包构建工具gulp入门实战
- gulp入门(1)- gulp安装
- gulp学习1-API
- gulp 初学 1
- gulp入门安装(1)
- gulp
- 数论——扩展欧几里得
- Context的应用场景
- 剑指offer39 二叉树的深度
- 第四周 项目5- 循环双链表应用
- 字符串拷贝--strcpy的代码实现
- gulp实战(1)
- java 基础练习-编写敏感词过滤程序
- AB1601编译优化参数引发的问题
- c++关于类和对象的实例
- Java-基本规则
- @EnableZuulServer、@EnableZuulProxy两个注解
- 图形用户界面
- Centos7 系统下配置中文支持
- ScrollView在SlidingUpPanelLayout中下滑无效问题