罗列一些自己初学时参考的文章,以记录自己学习的过程
gulp详细入门教程
区分全局安装和项目中本地安装前端构建工具gulpjs的使用介绍及技巧
常用插件的介绍与4个API的应用:
gulp.task()
gulp.src()
gulp.dest()
gulp.watch()
Gulp解决发布线上文件(CSS和JS)缓存问题
使用MD5重新命名文件-
Gulp自动添加版本号
文件命名格式:bootstrap.min.css?v=2af420b273需修改以下三处:
- 打开
node_modules\gulp-rev\index.js第133行
manifest[originalFile] = revisionedFile;更新为:
manifest[originalFile] = originalFile + '?v=' + file.revHash;- 打开
node_modules\gulp-rev\node_modules\rev-path\index.js第10行
return filename + '-' + hash + ext;更新为:
return filename + ext;- 打开
node_modules\gulp-rev-collector\index.js第31行
if (path.basename(json[key]).replace( new RegExp( opts.revSuffix ),'') !== path.basename(key) ){更新为:
if (path.basename( json[key]).split('?')[0] !== path.basename(key) ){ - 打开
-
使用gulp添加版本号
解决以上版本号会重复追加到链接后面的问题打开
node_modules\gulp-rev-collector\index.js修改以下两处:function escPathPattern(pattern) { var rp = pattern.replace(/[-[]{}()*+?.^$|/\]/g, "\$&"); rp = pattern + "(\? v=(\d|[a-z]){8,10})*"; return rp; }if (opts.replaceReved) { patterns.push( escPathPattern( (path.dirname(key) === '.' ? '' : closeDirBySep(path.dirname(key))) + path.basename(key, path.extname(key))) + opts.revSuffix + escPathPattern(path.extname(key)) + "(\?v=(\d|[a-z]){8,10})*" ); }加上
replaceReved:truegulp.task('rev', function() { return gulp.src(['./rev/*.json', './dist/index.html']) .pipe(revCollector({ replaceReved:true; })) .pipe(gulp.dest('./dist')); }); -
github gulp-rev
css文件和js文件版本号写在一个rev-manifest.json文件里面网上blog都只写了
merge:true,测试了一下发现不行,参照github加上了path才可以,还是要多参照github.pipe(rev.manifest({ path: 'rev-manifest.json', merge: true })) 用gulp做一个略完整的前端打包工作~
循环出多个task
根据以上文章,构建针对自己前端工程的gulp,附上github工程链接:https://github.com/laoruiwen/FogUI
问题更新
- gulp-uglify不兼容IE8
- 卸载插件
npm uninstall gulp-uglify [-g] [--save-dev]- 安装
gulp-uglify1.5.4版本
npm install --save-dev gulp-uglify@1.5.4 - 提示该文件夹包含名称过长无法删除
node_modules文件夹- 安装
rimraf
npm install rimraf -g- 删除
node_modules
rimraf node_modules - 安装