gulp总结笔记
1.前端开发:nvm和node的用法 NPM解决代码部署的问题
https://www.cnblogs.com/gaozejie/p/10689742.html 很好的总结了关系
2.gulp前端自动化流程的工具(自动完成压缩等为css和js文件,配置完关心样式即可 比如css 运行自动生成压缩成.min.css)
创建包管理环境安装gulp
npm init 生成一个package.json文件(里面记录项目安装了哪些依赖包),别人根据npm install即可安装
全局安装 npm install gulp -g
局部安装 npm install gulp --save-dev --save-dev参数会将安装的包添加到package.json文件的devDependencies
创建任务 先导包reqire
var gulp = require(“gulp”); #导包
gulp.task(“greet”,function(){ #任务(任务名,函数(){操作})
console.log(“hello word”);
});
运行:在相应的项目下 gulp 任务名(gulp greet)
3.用gulp去处理css文件(需要插件gulp-cssnano)
安装 npm install gulp-cssnano --save-dev
使用 gulp.task(‘css’, function(){
gulp.src(’./css/.css’) #读取css文件夹下的所有css文件
.pipe(cssnano()) #将读取到的放到管道交给cssnano去执行
.pipe(gulp.dest(’./dist/css/’)) #存放到指定地址 dest():存放地址
}); # ;不可少
4.给文件改名字 189有gulp-rename插件的详细网址
var rename = require(‘gulp-rename’); 导包
gulp.task(‘rcss’, function(){
gulp.src(’./css/.css’)
.pipe(cssnano())
.pipe(rename({‘suffix’:’.min’})) //后缀suffix 1.css 变为 1.min.css
.pipe(gulp.dest(’./dist/css’))
});
5.处理js文件的压缩 用到uglify插件
var uglify = require(‘gulp-uglify’);
gulp.task(‘js’,function(){
gulp.src(’./js/*.js’)
.pipe(uglify({
‘toplevel’:true, //2顶级区块压缩
‘compress’:{
‘drop_console’:true //3console语句也压锁
}
})) //压缩 toplevel顶级区域块压缩
.pipe(rename({‘suffix’:’.min’}))
.pipe(gulp.dest(’./dist/js’))
});
=========================================4.5
6.gulp合并多个文件,插件gulp-concat
导包 var concat = require(‘gulp-concat’)
查找出文件路径,并通过concat(url)将文件保存到一个新的文件中,在压缩
gulp.task(‘jss’, function(){
gulp.src(’./js/.js’)
.pipe(concat(‘index1.min.js’))
.pipe(uglify())
.pipe(gulp.dest(’./dist/js’))
});
7.压缩图片gulp-imagemin,gulp-cache
导包 var imagemin = require(‘gulp-imagemin’)
var cache = require(‘gulp-cache’)
查找符合的,缓存(在进行压缩(只能是原图))
gulp.task(‘image’, function(){
gulp.src(’./image/.’)
.pipe(cache(imagemin()))
// .pipe(rename({‘suffix’:’.min’}))
.pipe(gulp.dest(’./dist/image’))
});
8.监听不需要插件,用watch就好
gulp.task(‘watch’, function(){
gulp.watch(’./css/.css’,gulp.series(“rcss”)) //一旦有css文件改变,就会触发rcss上边的gulp完成压缩
gulp.watch(’./js/*.js’,gulp.series(“js”)) 监听的js gulp.series(“js”):如果有js边,就会触发任务js的代码,实现压缩
});
9.文件保存,自动刷新浏览器 browser-sync
导包 var bs = require(‘browser-sync’).create(); //create()创建服务器(服务器会控制浏览器)
进行初始化,bs.stream():加载当前页面
gulp.task(‘bs’,function(){
bs.init({
‘server’:{
‘baseDir’:’./’
}
})
});
gulp.task(‘server’,gulp.series(‘bs’,‘watch’)) //运行server之前,运行bs和watch的任务(watch任务会自动监听的设备)
1 2 | //gulp.series|4.0 依赖顺序执行 //gulp.parallel|4.0 多个依赖嵌套'html','css','js'并行 |
代码
需要先创建一个gulpfile.js文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | var gulp = require("gulp"); var cssnano = require('gulp-cssnano'); var rename = require('gulp-rename'); var uglify = require('gulp-uglify'); var bs = require('browser-sync').create(); //create()创建服务器 var concat = require('gulp-concat'); var imagemin = require('gulp-imagemin'); var cache = require('gulp-cache'); gulp.task("greet",function(){ console.log("hello word"); }); //css压缩处理 gulp.task('css', function(){ gulp.src('./css/*.css') .pipe(cssnano()) .pipe(gulp.dest('./dist/css/')) }); //改名 gulp-rename gulp.task('rcss', function(){ gulp.src('./css/*.css') .pipe(cssnano()) .pipe(rename({'suffix':'.min'})) .pipe(gulp.dest('./dist/css')) .pipe(bs.stream()) //加载当前页面 }); //处理js的压缩(gulp-uglify) 可以查看uglify的插件 gulp.task('js',function(){ gulp.src('./js/*.js') .pipe(uglify({ 'toplevel':true, //顶级区块压缩 'compress':{ 'drop_console':true //console语句也压锁 } })) //压缩 toplevel顶级区域块压缩 .pipe(rename({'suffix':'.min'})) .pipe(gulp.dest('./dist/js')) }); // 合并多个文件,减少请求次数gulp-concat // 安装:npm install gulp-concat --save-dev gulp.task('jss', function(){ gulp.src('./js/*.js') .pipe(concat('index1.min.js')) .pipe(uglify()) .pipe(gulp.dest('./dist/js')) }); // 压缩图片(图片也影响加载速度,还得保证不损坏图片失真)gulp-imagemin 还得需要gulp-cache(缓存压缩过的) // 只压缩未处理过的图片 gulp.task('image', function(){ gulp.src('./image/*.*') .pipe(cache(imagemin())) // .pipe(rename({'suffix':'.min'})) .pipe(gulp.dest('./dist/image')) }); // watch监听,不用任何插件,可以监听css,js,image等 gulp.task('watch', function(){ gulp.watch('./css/*.css',['rcss']) //gulp.series("rcss") 一旦有css文件改变,就会触发rcss上边的gulp完成压缩 }); // gulp Error 错误没有function()因为require导包版本不同所致 // 解决:一个修改package.json的dev文件的版本,第二gulp.series('触发的任务') // 更改文件后,自动更新浏览器 // 安装:npm install browser-sync --save-dev gulp.task('bs',function(){ bs.init({ 'server':{ 'baseDir':'./' } }) }); gulp.task('server',['bs','watch']) ; //gulp.series('bs','watch') 运行server之前,运行bs和watch的任务(watch任务会自动监听的设备) |