gulp是一个自动化构建工具,在项目开发阶段或部署阶段执行一些自动化任务。css
gulp能够帮咱们将书写的代码比那位真正可在生产环境中部署的代码,是实现自动化工做流的主要工具。html
gulp跟grunt同样支持跨平台,即支持跨平台不是gulp独有的优点,不一样在于grunt须要Gruntfile.js,gulp须要Gulpfile.js,最核心的不一样之处在于,gulp是以流为核心的,而grunt是以配置加上文件io为核心的。node
注意,由于是国外资源,安装时可以使用cnpm淘宝镜像来安装。css3
如下是gulpfile.js示例:npm
// 定义一个个task,task就是普通的函数 function task1() { console.log('我是task1!'); return;// 必须有return,不然gulp会认为任务没有执行完毕 } function task2() { console.log('我是task2!'); return;// 必须有return,不然gulp会认为任务没有执行完毕 } function task3() { console.log('我是task3!'); return;// 必须有return,不然gulp会认为任务没有执行完毕 } // 向外暴露 exports.t1 = task1; exports.task2 = task2; exports.t3 = task3; // 外部使用就是gulp t1 // gulp task2 // 默认暴露 exports.default = task3;// 直接在命令行gulp直接运行
如下是使用流的gulpfile.js的代码示例:json
// 引入gulp文件,require表示引入,解构出三个函数 const {src, dest, pipe} = require("gulp"); // 定义task function task1() { // src表示设置流的源头 return src("./foo/**/*.txt") // 这里的一个*表明任意名字,**表明任意目录,也就是全部目录,全部文件 // pipe表示管道,pipe()里面写函数 // dest表示设置流的终点 .pipe(dest("./bar")); } // 暴露 exports.default = task1;
gulp使用各类插件的示例:gulp
// 引入gulp文件,require表示引入,解构出三个函数 const {src, pipe, dest, parallel} = require('gulp'); // 引入插件 const uglify = require('gulp-uglify'); const concat = require('gulp-concat'); const autoprefixer = require('gulp-autoprefixer'); const csso = require('gulp-csso'); const htmlMinify = require('gulp-html-minify'); const htmlReplace = require('gulp-html-replace'); const base64 = require('gulp-base64'); function js() { return src('./app/js/**/*.js') .pipe(uglify()) .pipe(concat('all.min.js')) .pipe(dest('./dest/js')); } function css() { return src('./app/css/**/*.css') .pipe(base64({ extentions: ['png'], maxImageSize: 500*1024 // bytes 转换图片的最大尺寸 })) .pipe(autoprefixer({ browsers: ['last 2 version', '> 5%', 'firefox > 10', 'ie 6-8'] })) .pipe(csso()) .pipe(concat('all.min.css')) .pipe(dest('./dest/css')); } function html() { return src('./app/index.html') .pipe(htmlReplace({ css: './css/all.min.css', // 须要在html文件中的link标签开头添加<!-- bulid:css -->和结尾添加<!-- endbuild --> js: './js/all.min.js' //js和css同理,改成bulid:js })) .pipe(htmlMinify()) .pipe(dest('./dest')); } // 暴露 exports.default = parallel(js, css, html);