博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gulp初学使用总结
阅读量:6087 次
发布时间:2019-06-20

本文共 5007 字,大约阅读时间需要 16 分钟。

之前从网上看到用gulp构建的人还是挺多的,今天试着学习了一下,基本都是从其他网站摘录的,以下是总结:

还是先贴一下项目结构吧:

我把原始的代码都放到了assets文件里边,dist是gulp生成的images,scripts,styles,所有的*.html都发布到了根目录

 

 

一、全局安装gulp:

  $ npm install --global gulp

二、创建package.json

  进入项目根目录,利用npm init根据提示,首先创建package.json文件,然后根据自己的需要,导入所依赖模块,具体的包详见下文gulpfile.js

  下载地址:https://www.npmjs.com

  比如下载gulp-minify-css,直接执行npm install --save-dev gulp-minify-css

  --save-dev部分最好都写上,这样能自动把模块和版本号添加到package.json里的devdependencies部分

  依次导入所有依赖的模块。

三、在根目录创建gulpfile.js文件

  以下是gulpfile.js的详细内容:

  

1 // 载入外挂  2 var gulp = require('gulp'),   3     autoprefixer = require('gulp-autoprefixer'), //处理浏览器前缀  4     minifycss = require('gulp-minify-css'), //压缩css  5     jshint = require('gulp-jshint'), //检测js  6     uglify = require('gulp-uglify'), //压缩js  7     imagemin = require('gulp-imagemin'), //压缩image  8     rename = require('gulp-rename'), //重命名  9     clean = require('gulp-clean'), //清理 10     concat = require('gulp-concat'), //合并 11     notify = require('gulp-notify'), //提示 12     cache = require('gulp-cache'),  13     livereload = require('gulp-livereload'), //自动刷新 14     rev = require('gulp-rev'), //添加md5 15     minifyhtml = require('gulp-minify-html'), //压缩html 16     revCollector = require('gulp-rev-collector');  //路径替换 17  18 // 样式 19 gulp.task('styles', function() {   20   return gulp.src('assets/css/main.css') 21     .pipe(autoprefixer({ 22             browsers: ['last 2 versions'], 23             cascade: true, //是否美化属性值 默认:true 像这样: 24             //-webkit-transform: rotate(45deg); 25             //        transform: rotate(45deg); 26             remove:true //是否去掉不必要的前缀 默认:true  27         })) 28     .pipe(gulp.dest('dist/styles')) 29     .pipe(rename({ suffix: '.min' })) 30     .pipe(minifycss()) 31     .pipe(rev()) 32     .pipe(gulp.dest('dist/styles')) 33     .pipe(rev.manifest())//- 生成一个rev-manifest.json 34     .pipe(gulp.dest('./rev/css')) 35     .pipe(notify({ message: 'Styles task complete' })); 36 }); 37  38 // 脚本 39 gulp.task('scripts', function() {   40   return gulp.src(['assets/js/vendor/*.js','assets/js/*.js']) 41     .pipe(jshint('.jshintrc')) 42     .pipe(jshint.reporter('default')) 43     .pipe(concat('main.js')) 44     .pipe(gulp.dest('dist/scripts')) 45     .pipe(rename({ suffix: '.min' })) 46     .pipe(uglify()) 47     .pipe(rev()) 48     .pipe(gulp.dest('dist/scripts')) 49     .pipe(rev.manifest())//- 生成一个rev-manifest.json 50     .pipe(gulp.dest('./rev/js')) 51     .pipe(notify({ message: 'Scripts task complete' })); 52 }); 53  54 // 图片 55 gulp.task('images', function() {   56   return gulp.src('assets/img/*') 57     .pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true }))) 58     .pipe(gulp.dest('dist/images')) 59     .pipe(notify({ message: 'Images task complete' })); 60 }); 61  62 //压缩Html/更新引入文件版本 63 gulp.task('minify-html', function() { 64   return gulp.src(['rev/*/*.json','assets/*.html']) 65     .pipe( revCollector()) 66     .pipe(minifyhtml({ 67       conditionals: true, 68       spare:true 69     })) 70     .pipe(gulp.dest('./')) 71     .pipe(notify({ message: 'Htmls task complete' })); 72 }); 73  74 // 清理 75 gulp.task('clean', function() {   76   return gulp.src(['dist/styles', 'dist/scripts', 'dist/images'], {read: false}) 77     .pipe(clean()); 78 }); 79  80 // 预设任务 81 gulp.task('default', ['clean'], function() {   82     gulp.start('styles', 'scripts', 'images'); 83 }); 84  85 // 看守 86 gulp.task('watch', function() { 87  88   // 看守所有.css档 89   gulp.watch('assets/css/*.css', ['styles']); 90  91   // 看守所有.js档 92   gulp.watch('assets/js/**/*.js', ['scripts']); 93  94   // 看守所有图片档 95   gulp.watch('assets/img/**/*', ['images']); 96  97   //看守所有.html档 98   gulp.watch('assets/*.html', ['html']); 99 100   // 建立即时重整伺服器101   var server = livereload();102 103   // 看守所有位在 dist/  目录下的档案,一旦有更动,便进行重整104   gulp.watch(['dist/**']).on('change', function(file) {105     server.changed(file.path);106   });107 108 });

四、执行gulp可执行gulpfile.js里所有的task,也可单独执行某一个任务,如gulp scripts

五、遇到的几个问题:

  1、有个png图片深度压缩的依赖模块没有安装成功,npm install imagemin-pngquant --save-dev (未安装成功),因为我这个项目所有图片已经手动压缩过了,也就暂时没去管这个问题,有时间了再好好查一下吧。

  2、检测js语法模块gulp-jshint执行的时候会报错,提示缺少.jshintrc文件,于是搜了一下需要再根目录配置一下.jshintrc   

{    "bitwise" : true,    "browser" : true,    "curly" : true,    "eqeqeq" : true,    "eqnull" : true,    "esnext" : true,    "immed" : true,    "jquery" : true,    "latedef" : true,    "newcap" : true,    "noarg" : true,    "node" : true,    "strict" : false,    "trailing" : true}

  这里具体怎么配置没有详细查。。。

  3、在定义模块名称的时候,有一个用了大写,直接执行gulp没有生效,单独执行这一个任务,报错,总是报未定义,后来改成了小写,就好了,这里不清楚是为什么

    minifyHtml = require('gulp-minify-html') , 单独执行gulp minify-html任务,这一行.pipe(minifyHtml(...))总是会报minifyHtml未定义,改成小写之后没问题了。

  4、在执行压缩的时候,基本没遇到什么问题,gulp-rev和gulp-rev-collector配合使用的时候遇到一点儿问题,执行.pipe(rev.manifest())//- 生成一个rev-manifest.json

    

    

    

    把生成的json文件,分别放到了rev的css和rev的js里,这样每次执行revCollector就会查找*.html里所有的main.min.css和main.min.js文件,并且用添加md5值得新文件名替换掉。

 

转载于:https://www.cnblogs.com/lvdoumeng/p/5036871.html

你可能感兴趣的文章
结合当前公司发展情况,技术团队情况,设计一个适合的技术团队绩效考核机制...
查看>>
python-45: opener 的使用
查看>>
cad图纸转换完成的pdf格式模糊应该如何操作?
查看>>
Struts2与Struts1区别
查看>>
网站内容禁止复制解决办法
查看>>
Qt多线程
查看>>
我的友情链接
查看>>
想说一点东西。。。。
查看>>
css知多少(8)——float上篇
查看>>
NLB网路负载均衡管理器详解
查看>>
水平添加滚动条
查看>>
PHP中”单例模式“实例讲解
查看>>
VS2008查看dll导出函数
查看>>
VM EBS R12迁移,启动APTier . AutoConfig错误
查看>>
atitit.细节决定成败的适合情形与缺点
查看>>
Mysql利用binlog恢复数据
查看>>
我的友情链接
查看>>
用yum安装mariadb
查看>>
一点IT"边缘化"的人的思考
查看>>
WPF 降低.net framework到4.0
查看>>