gulp.js是一个基于流(stream)的自动化构建工具,是开源的JavaScript自动化工具,基于node.js和npm的构建工具,可以处理压缩代码,合并代码,压缩图片,编译less等等任务
全局安装gulp
npm install –global gulp-cli
或者
yarn add gulp-cli -g
初始化
npm init
作为开发依赖进行安装gulp
npm install –save-dev gulp
或者
yarn add gulp-cli -d
安装依赖
yarn add –save-dev gulp-sass gulp-autoprefixer browser-sync gulp-notify
创建gulpfile.js
执行gulp
gulp
修改gulpfile.js
导入gulp(这里用个变量接收)
let gulp = require(“gulp”);
常用方法
gulp.task() // 定义任务
gulp.src() // 指向需要执行任务的文件
gulp.dest() // 执行完任务的文件最后在哪里
gulp.watch() // 监测文件是否发生变化
gulp.task()其中有两个参数,分别是任务名称和一个回调函数
例如:
let gulp = require("gulp");
gulp.task("test", function() {
return console.log("hallo gulp");
});
执行test任务(在终端,应用根目录下)
gulp test
默认任务
gulp.task("default", function(){
return console.log("hallo gulp");
})
拷贝任务
gulp.task("copyData", function(){
gulp.src("src/*").pipe(gulp.dest("app"));
})
上面是将src文件夹下全部文件拷贝到app文件下,哪怕没有这个文件夹,gulp也会自动新建文件夹并且拷贝过去
图片压缩任务
安装依赖
npm install –save-dev gulp-imagemin
修改gulpfile.js
let imagemin = require("gulp-imagemin");
gulp.task("imageMin", function(){
gulp.src("src/*.{png,jpg,gif,ico}").pipe(imagemin(
{
optimizationLevel: 5,
progressive: true,
interlaced: true,
multipass: true,
svgoPlugins:[{removeViewBox: true}],
}
)).pipe(gulp.dest("src/images"));
})
imagemin方法参数:
optimizationLevel:压缩等级(0-7),默认值为3
progressive:是否无损压缩jpg图片,默认值为false
interlaced:隔行扫描gif渲染,默认值为false
multipass:多次优化svg,直到优化完毕,默认值为false
svgoPlugins: 移除svg的viewbox属性
PostCSS是一个用JavaScript转换css的工具
一般来说PostCSS不单独使用,会搭配构建工具(例如:Webpack,Gulp)使用,因此这里使用的是Gulp
安装PostCSS依赖和gulp依赖
yarn add gulp gulp-postcss postcss-cssnext postcss-short
修改gulpfile.js
const gulp = require("gulp");
const postcss = require("gulp-postcss");
const cssnext = require("postcss-cssnext");
const shortcss = require("postcss-short");
gulp.task("postcss", function() {
const processors = [
shortcss,
cssnext
];
return gulp.src("./1.css")
.pipe(postcss(processors))
.pipe(gulp.dest("./css"));
});
gulp postcss
执行完毕后自动添加css兼容前缀了,还支持下一代css的语法