gulp入門(mén)

簡(jiǎn)介

gulp是一個(gè)前端自動(dòng)化構(gòu)建的神器,通過(guò)流操作,將上一步操作的輸出直接輸入到下一步,定制各種任務(wù),比如編譯預(yù)處理css,轉(zhuǎn)碼壓縮js,來(lái)改進(jìn)網(wǎng)站開(kāi)發(fā)的過(guò)程,減少一些重復(fù)的操作,使開(kāi)發(fā)更加快速高效。

首先你最好了解一下node,npm,requirejs之類的知識(shí),es6能懂一點(diǎn)就最好啦。

api

[gulp.task(name,[,deps],fn)][] 定義任務(wù) name:任務(wù)名稱 deps:依賴任務(wù)名稱 fn:回調(diào)函數(shù)
[gulp.src(globs[,options])][] 執(zhí)行任務(wù)處理的文件 globs:處理的文件路徑(字符串或字符串?dāng)?shù)組)
[gulp.dest(path[,options])][] 處理完后生成文件 path只能為文件路徑,不能指定文件名
[gulp.watch(glob[,opts],task)][] 用于監(jiān)聽(tīng)文件變化,文件一修改就執(zhí)行指定task任務(wù)。(watch還有一種寫(xiě)法在demo中會(huì)提到)

注意

  • task任務(wù)中的依賴任務(wù)會(huì)先執(zhí)行,這里可能出現(xiàn)依賴任務(wù)為異步的情況,可以用cb讓依賴任務(wù)告知你任務(wù)執(zhí)行完畢,或者steam,或者promise來(lái)解決。
  • dest中的path參數(shù)是文件夾路徑,也就是生成文件的名字和你給的路徑?jīng)]有關(guān)系,比如path:a/b.js;那么你生成的文件路徑可能為:a/b.js/xx.js;它會(huì)將b.js識(shí)別成文件夾。
  • dest中做了通配符的路徑:gulp.src('script/**/*.js')
    ? .pipe(gulp.dest('dist')); //最后生成的文件路徑為 dist/**/*.js

demo

//引入模塊 require('node_modules里對(duì)應(yīng)的模塊')
const gulp = require('gulp'),
      less = require('gulp-less');

//定義一個(gè)testLess任務(wù) (自定義任務(wù)名稱)
gulp.task('testLess',() => { //es6的箭頭函數(shù)
  gulp.src('src/less/index.less') //該任務(wù)針對(duì)的文件
      .pipe(less()) //該任務(wù)調(diào)用的模塊
      .pipe(gulp.dest('src/css')); //將會(huì)在src/css下生成index.css文件
});

//當(dāng)**.less文件發(fā)生改變時(shí),執(zhí)行后面的箭頭函數(shù)(es6)
gulp.watch(['./src/less/**.less']).on('change',(event)=>{
  console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
  //do something. 可以是reload
})

gulp.task('dev',['testLess','other Task']);//可以將所有任務(wù)包裝在這個(gè)任務(wù)里面,然后由它去處理。

//運(yùn)行時(shí)只需要gulp task任務(wù)名字就可以了,比如task dev。當(dāng)要輸入的代碼很長(zhǎng)的時(shí)候,我們可以將它配置在package.json的script中,用npm run xxx去運(yùn)行。

gulp常用插件

run-sequence:gulp里的task都是異步并發(fā)執(zhí)行的,[runSequence][]可以讓task任務(wù)按照順序執(zhí)行。

child_process:[require('child_process').exec][]可以讓我們?cè)诖a中執(zhí)行shell指令

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比,gulpjs無(wú)需寫(xiě)一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單,學(xué)...
    依依玖玥閱讀 3,305評(píng)論 7 55
  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比,gulpjs無(wú)需寫(xiě)一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單,學(xué)...
    井皮皮閱讀 1,402評(píng)論 0 10
  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比,gulpjs無(wú)需寫(xiě)一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單,學(xué)...
    小裁縫sun閱讀 1,031評(píng)論 0 3
  • [轉(zhuǎn)載](https://github.com/zhonglimh/Gulp) Gulp構(gòu)建前端自動(dòng)化工作流 Gu...
    Gopal閱讀 873評(píng)論 0 0
  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比,gulpjs無(wú)需寫(xiě)一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單,學(xué)...
    build1024閱讀 585評(píng)論 0 0

友情鏈接更多精彩內(nèi)容