用gulp對本身的描述就是:Automate and enhance your workflow。html
要使用gulp要保證你的電腦上要有node環境node
官方建議你這麼安裝它git
//全局安裝gulp命令行 $ npm install gulp-cli -g //gulp4.0 $ npm install gulp@next -D //gulp3.9.1 $ npm install gulp -D //建立gulpfile.js文件 $ touch gulpfile.js $ gulp --help
gulp4在gulp3的基礎上新增了幾個函數,但它的使用依舊簡單方便。一共以下10個:github
官方說明API說明:https://github.com/gulpjs/gul...npm
gulp4再也不可以經過數組形式傳入任務,你須要使用gulp.series()和gulp.parallel()來執行他們。例如:json
gulp.task('default',gulp.parallel('taskA','taskB'));//並行執行 gulp.task('default',gulp.series('taskA','taskB'));//按順序執行
parallel和series函數能夠接受函數做爲參數,這意味着咱們能夠將任務用獨立函數表示:gulp
funcion taskA(){...} funcion taskB(){...} gulp.task(taskA);//最簡單的方式 gulp.task('i-am-taskB',taskB);//爲taskB添加任務名 gulp.task('taskA-taskB', gulp.series(taskA, taskB));//序列執行 gulp.task('taskA-taskB', gulp.parallel(taskA,taskB));//並行運行
並且當咱們執行序列化任務時,面板的輸出也更加清晰數組
PS D:\github\resume> gulp [21:49:59] Using gulpfile D:\project\gulpfile.js [21:49:59] Starting 'default'... [21:49:59] Starting 'copyfile'... [21:49:59] Finished 'copyfile' after 90 ms [21:49:59] Starting 'minifyhtml'... [21:49:59] Finished 'minifyhtml' after 171 ms [21:49:59] Starting 'minifyCSS'... [21:50:00] Finished 'minifyCSS' after 353 ms [21:50:00] Starting 'uglyfyJS'... [21:50:01] Finished 'uglyfyJS' after 1.43 s [21:50:01] Finished 'default' after 2.05 s
語法: gulp.lastRun(taskName,timeResolution) 參數: taskName:任務名 timeResolution(可選):返回的時間戳的精度
例如函數
gulp.lastRun('someTask', 1000) // 1426000004000. gulp.lastRun('someTask', 100) // 1426000004300.
語法: gulp.tree(option) options: { deep:true/false //是否遍歷每一個子任務 }
示例gulpfile.js工具
gulp.task('one', function(done) { // do stuff done(); }); gulp.task('two', function(done) { // do stuff done(); }); gulp.task('three', function(done) { // do stuff done(); }); gulp.task('four', gulp.series('one', 'two')); gulp.task('five', gulp.series('four', gulp.parallel('three', function(done) { // do more stuff done(); }) ) );
實例輸出
gulp.tree() // output: [ 'one', 'two', 'three', 'four', 'five' ] gulp.tree({ deep: true }) /*output: [ { "label":"one", "type":"task", "nodes":[] }, { "label":"two", "type":"task", "nodes":[] }, { "label":"three", "type":"task", "nodes":[] }, { "label":"four", "type":"task", "nodes":[ { "label":"<series>", "type":"function", "nodes":[ { "label":"one", "type":"task", "nodes":[] }, { "label":"two", "type":"task", "nodes":[] } ] } ] }, { "label":"five", "type":"task", "nodes":[ { "label":"<series>", "type":"function", "nodes":[ { "label":"four", "type":"task", "nodes":[ { "label":"<series>", "type":"function", "nodes":[ { "label":"one", "type":"task", "nodes":[] }, { "label":"two", "type":"task", "nodes":[] } ] } ] }, { "label":"<parallel>", "type":"function", "nodes":[ { "label":"three", "type":"task", "nodes":[] }, { "label":"<anonymous>", "type":"function", "nodes":[] } ] } ] } ] } ] */
這是一個用於自動加載插件的gulp插件,安裝以下:
npm install gulp-load-plugins -D
當一個項目須要不少插件來管理的時候,你的gulpfile.js可能會變成這樣:
var gulp = require('gulp'), a = require('gulp-a'), b = require('gulp-b'), c = require('gulp-c'), ... ... z = require('gulp-z');
使用gulp-load-plugins可讓你少寫一些重複代碼,你能夠這樣使用:
var gulp = require('gulp'); //加載gulp-load-plugins插件,並立刻運行它 var plugins = require('gulp-load-plugins')(); //或是: //var gulpLoadPlugins = require('gulp-load-plugins'); //var plugins = gulpLoadPlugins();
調用插件
plugins.clone() //等價於require('gulp-clone')();
實質上是gulp幫助咱們作了以下操做
plugins.clone= require(‘gulp-clone’);