gulp实战(2)
来源:互联网 发布:神经网络 python实现 编辑:程序博客网 时间:2024/05/18 01:20
原码目录:src
打包目录:build
文件目录:src/css
目标:src 中的 CSS 文件是未压缩的,打包至 build 目录后,生成 min.css 后缀的压缩文件
分析:
1. 打包时,build目录中可能已经存在上一次打包生成的旧文件,所以每次打包都应该先清理掉。
2. 打包时需要执行压缩操作
3. 打包时需要执行文件更名操作,比如:app.css 压缩后的文件名应该为 app.min.css
4. 打包后,每次修改 src 目录下的 CSS 文件,应该即时将修改部分重新打包
5. 打包时的执行顺序为:清理 -> 打包 -> 监控修改,而且后一步必须在前一步操作完成后才可以执行。
第一步:设置变量
var config = { src: "src", dest: "build"}
第二步:清理
涉及插件 [ gulp-clean ]
gulp-clean:清理文件及文件夹
/** * 清理目标目录 */gulp.task('clean', function(cb) { pump([ gulp.src(config.dist), clean() ], cb)})
第三步:执行文件操作
涉及插件 [ gulp-rename, gulp-clean-css, gulp-sourcemaps, gulp-postcss, autoprefixer, gulp-changed]
gulp-rename:更改文件名
gulp-clean-css:压缩CSS文件
gulp-sourcemaps:生成sourceMap
gulp-changed:只传递修改的文件,开发过程中,文件经常被修改,通过这个插件实现局部打包
gulp-postcss & autoprefixer:根据浏览器版本自动处理浏览器前缀
/** * 执行CSS压缩 */gulp.task('minify:css', [], function(cb) { pump([ // 获取原目录下所有的css文件 gulp.src(config.src + "/**/*.css"), // 执行更名操作 rename({ suffix: '.min' }), // 每次打包时,只打包内容发生改变的文件 changed(config.dist, { extension:'.css' }), // 生成sourcemap,需要配合后面的sourcemaps.write() sourcemaps.init(), // 针对浏览器生成不同的CSS前缀 postcss([ autoprefixer({ browsers: ['last 2 versions'], cascade: true }) ]), // 执行JS压缩 minifyCss({ keepSpecialComments: '*' }), // 生成sourcemap sourcemaps.write('.'), // 输出至目标目录 gulp.dest(config.dist) ], cb);});
第四步:监控CSS文件,如果有变性则即刻重新打包
/** * 监控 */gulp.task('watch', [], function(cb) { gulp.watch(config.src + "/**/*.css", ['minify:css']);});
第五步:安排执行顺序
涉及插件 [ run-sequence ]
run-sequence:同步执行任务
/** * 开始执行 */gulp.task('default', function(cb) { sequence('clean', 'minify:css', 'watch', cb);});
完整版文档
var gulp = require('gulp'), clean = require('gulp-clean'), minifyCss = require('gulp-clean-css'), rename = require('gulp-rename'), changed = require('gulp-changed'), postcss = require('gulp-postcss'), autoprefixer = require('autoprefixer'), 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)})/** * 执行CSS压缩 */gulp.task('minify:css', [], function(cb) { pump([ // 获取原目录下所有的css文件 gulp.src(config.src + "/**/*.css"), // 执行更名操作 rename({ suffix: '.min' }), // 每次打包时,只打包内容发生改变的文件 changed(config.dist, { extension:'.css' }), // 生成sourcemap,需要配合后面的sourcemaps.write() sourcemaps.init(), // 针对浏览器生成不同的CSS前缀 postcss([ autoprefixer({ browsers: ['last 2 versions'], cascade: true }) ]), // 执行JS压缩 minifyCss({ keepSpecialComments: '*' }), // 生成sourcemap sourcemaps.write('.'), // 输出至目标目录 gulp.dest(config.dist) ], cb);});/** * 监控 */gulp.task('watch', [], function(cb) { gulp.watch(config.src + "/**/*.css", ['minify:css']);});/** * 开始执行 */gulp.task('default', function(cb) { sequence('clean', 'minify:css', 'watch', cb);});
阅读全文
0 0
- gulp实战(2)
- 实战gulp
- Gulp配置实战
- gulp实战(1)
- gulp实战(3)
- gulp实战(4)
- gulp实战(5)
- 实战演练:用gulp+webpack构建用户登录(2):简化
- 前端工程之构建工具-gulp实战
- 前端打包构建工具gulp入门实战
- gulp入门(2)- gulp-uglify插件
- gulp的使用2
- gulp入门2
- gulp学习2-插件
- gulp入门(2)
- gulp
- Gulp
- gulp
- OpenCV 人脸检测(python)
- Mediacodec编码UDP传输,接收到数据不能解码显示的问题
- 翁恺老师零基础学Java奇偶个数&数字特征值
- CMake Useful Variables/Logging Useful Variables
- jktysdkjgyutdyawzhdryt
- gulp实战(2)
- Django 自定义后台AUTH登陆方法
- LSI Logic 1068 SAS 磁盘阵列卡配置教程
- POJ 1185(在求最大炮数上,输出一条方案,未Accept,网站在维护)
- 171024 逆向-以Xp0int的so fun为例利用Zjdroid安卓脱壳
- 查看当前oracle中正在执行的sql语句
- Django 用类的方式处理POST GET
- ORA-16072: a minimum of one standby database destination is required
- 块加密 工作模式 ECB、CBC、PCBC、CFB、OFB、CTR