gulp

1冰抢,安裝nodeJs
1.1显熏、說明:gulp是基于nodeJS,理所當然需要安裝nodeJS晒屎;
1.2、安裝:打開nodejs官網缓升,點擊碩大的綠色Download按鈕鼓鲁,它會根據(jù)系統(tǒng)信息選擇對應版本(.msi文件)
1.3、node -v 查看安裝的nodeJS版本港谊,出現(xiàn)版本號骇吭,說明安裝正確。PS:未能出現(xiàn)版本號歧寺,請嘗試注銷電腦重試燥狰。
1.4、npm -v 查看npm的版本號斜筐,npm是在安裝nodeJS時一同安裝的nodeJS包管理器龙致,
2,npm介紹
2.1顷链,說明:npm(node package manager)nodeJs的包管理器目代,用于node插件管理(包括安裝、卸載嗤练、管理依賴等)榛了;
2.2,使用npm安裝插件:npm install <name> [-g] [--save-dev]
2.2.1煞抬,<name>:node插件名稱霜大,例如:npm install gulp-less --save-dev
2.2.2,-g:全局安裝革答。將會安裝在C:\Users\Administrator\AppData\Roaming\npm战坤,并且寫入系統(tǒng)環(huán)境變量曙强;非全局安裝:將會安裝在當前定位目錄;全局安裝可以通過命令行在任何地方調用它湖笨,本地安裝將安裝在定位目錄的node_modules文件夾下旗扑,通過require()調用。
2.2.3慈省,--save:將保存配置信息至package.json(package.json是nodeJS項目配置文件)臀防;
2.2.4,-dev :保存至pageage.json的devDependencies節(jié)點边败,不指定-dev將保存在dependencies節(jié)點袱衷;
2.2.5,為什么要保存至package.json笑窜?因為node插件包相對來說非常龐大致燥,所以不加入版本管理,將配置信息寫入package.json并將其加入版本管理排截,其他開發(fā)者對應下載即可(命令提示符執(zhí)行npm install嫌蚤,則會根據(jù)package.json下載所有需要的包,npm install --production只下載dependencies節(jié)點的包)断傲。
2.3脱吱,使用npm卸載插件:npm uninstall <name> [-g] [--save-dev] PS:不要直接刪除本地插件包
2.4,刪除全部插件:npm uninstall gulp-less gulp-concat......认罩?太麻煩
2.5箱蝠,借助rimraf:npm iinstall rimraf -g 用法:rimraf node_modules
2.6,使用npm更新插件:npm update <name> [-g] [--save-dev]
2.6.1垦垂,更新全部插件:npm update [--save-dev]
2.7宦搬,當前目錄已安裝插件:npm list
2.8,查看npm幫助:npm help
3劫拗,選裝cnpm
3.1间校,因為npm安裝插件是從國外服務器下載,受網絡影響大杨幼,可能出現(xiàn)異常撇簿;
3.2,淘寶鏡像官網:http://npm.taobao.org/
3.3差购,安裝:命令提示符執(zhí)行npm install cnpm -g --registry=https://registry.npm.taobao.org四瘫;注意:安裝完后最好查看其版本號cnpm -v或關閉命令提示符重新打開,安裝完直接使用有可能會出現(xiàn)錯誤欲逃;
注:cnpm跟npm用法完全一致找蜜,只是在執(zhí)行命令時將npm改為cnpm
4,全局安裝gulp
4.1稳析,全局安裝gulp目的是為了通過她執(zhí)行gulp任務洗做;
4.2弓叛,命令提示符執(zhí)行cnpm install gulp -g
4.3,查看是否正確安裝:命令提示符執(zhí)行gulp -v诚纸,出現(xiàn)版本號即為正確安裝撰筷;
5,新建package.json文件
5.1畦徘,package.json是基于nodejs項目必不可少的配置文件毕籽,它是存放在項目根目錄的普通json文件;
5.2井辆,命令提示符執(zhí)行npm init
注:package.json不能添加注釋
6关筒,安裝gulp插件
6.1,定位目錄后命令提示符執(zhí)行npm install gulp-sass --save-dev
6.2杯缺,將會安裝在node_modules的gulp-sass目錄下
6.3蒸播,為了能正常使用,我們還得本地安裝gulp:npm install gulp --save-dev
PS:我們全局安裝了gulp萍肆,項目也安裝了gulp袍榆,全局安裝gulp是為了執(zhí)行gulp任務,本地安裝gulp則是為了調用gulp插件的功能塘揣。
7蜡塌,新建gulpfile.js文件
7.1,gulpfile.js是gulp項目的配置文件勿负,是位于項目根目錄的普通JS文件(其實將gulpfile.js放入其他文件夾下亦可)
//導入工具包 require('node_modules里對應模塊')
var gulp = require('gulp'), //本地安裝gulp所用到的地方
less = require('gulp-sass');
//定義一個testLess任務(自定義任務名稱)

gulp.task('testSass', function () {

gulp.src('src/less/index.less') //該任務針對的文件

.pipe(less()) //該任務調用的模塊

.pipe(gulp.dest('src/css')); //將會在src/css下生成index.css

});

gulp.task('default',['testLess', 'elseTask']); //定義默認任務 elseTask為其他任務,該示例沒有定義elseTask任務

//gulp.task(name[, deps], fn) 定義任務 name:任務名稱 deps:依賴任務名稱 fn:回調函數(shù)

//gulp.src(globs[, options]) 執(zhí)行任務處理的文件 globs:處理的文件路徑(字符串或者字符串數(shù)組)

//gulp.dest(path[, options]) 處理完后文件生成路徑

8劳曹,運行gulp
8.1奴愉,命令提示符執(zhí)行:gulp 任務名稱
8.2,編譯sass:執(zhí)行gulp testSass
8.3铁孵,當執(zhí)行gulp default或gulp將會調用default任務里的所有任務[‘testSass’,’...’]
9锭硼,使用webstorm運行gulp任務
將項目導入webstorm,右鍵gulpfile.js 選擇”Show Gulp Tasks”打開Gulp窗口蜕劝,若出現(xiàn)”No task found”檀头,選擇右鍵”Reload tasks”,雙擊運行即可岖沛。
10暑始,API
1、gulp.src(globs[, options])
1.1婴削、說明:src方法是指定需要處理的源文件的路徑廊镜,gulp借鑒了Unix操作系統(tǒng)的管道(pipe)思想,前一級的輸出唉俗,直接變成后一級的輸入嗤朴,gulp.src返回當前文件流至可用插件配椭;

1.2、globs: 需要處理的源文件匹配符路徑雹姊。類型(必填):String or StringArray股缸;

通配符路徑匹配示例:

“src/a.js”:指定具體文件;

”:匹配所有文件 例:src/.js(包含src下的所有js文件)吱雏;

”:匹配0個或多個子文件夾 例:src//*.js(包含src的0個或多個子文件夾下的js文件)敦姻;

“{}”:匹配多個屬性 例:src/{a,b}.js(包含a.js和b.js文件) src/*.{jpg,png,gif}(src下的所有jpg/png/gif文件);

“!”:排除文件 例:!src/a.js(不包含src下的a.js文件)坎背;

JavaScript
123456789
var gulp = require('gulp'),less = require('gulp-less');gulp.task('testLess', function () {//gulp.src('less/test/style.less')gulp.src(['less//.less','!less/{extend,page}/.less']).pipe(less()).pipe(gulp.dest('./css'));});

1.3替劈、options: 類型(可選):Object,有3個屬性buffer得滤、read陨献、base;

options.buffer: 類型:Boolean 默認:true 設置為false懂更,將返回file.content的流并且不緩沖文件眨业,處理大文件時非常有用;

options.read: 類型:Boolean 默認:true 設置false沮协,將不執(zhí)行讀取文件操作龄捡,返回null;

options.base: 類型:String 設置輸出路徑以某個路徑的某個組成部分為基礎向后拼接慷暂,具體看下面示例:

JavaScript
1234567
gulp.src('client/js//.js') .pipe(minify()).pipe(gulp.dest('build')); // Writes 'build/somedir/somefile.js'gulp.src('client/js//.js', { base: 'client' }).pipe(minify()).pipe(gulp.dest('build')); // Writes 'build/js/somedir/somefile.js'

2聘殖、gulp.dest(path[, options])
2.1、說明:dest方法是指定處理完后文件輸出的路徑行瑞;
JavaScript
12345
gulp.src('./client/templates/*.jade').pipe(jade()).pipe(gulp.dest('./build/templates')).pipe(minify()).pipe(gulp.dest('./build/minified_templates'));

      2.2奸腺、path: 類型(必填):String or Function 指定文件輸出路徑,或者定義函數(shù)返回文件輸出路徑亦可血久;

      2.3突照、options: 類型(可選):Object,有2個屬性cwd氧吐、mode讹蘑;

options.cwd: 類型:String 默認:process.cwd():前腳本的工作目錄的路徑 當文件輸出路徑為相對路徑將會用到;

options.mode: 類型:String 默認:0777 指定被創(chuàng)建文件夾的權限筑舅;

3座慰、gulp.task(name[, deps], fn)
3.1、說明:task定義一個gulp任務翠拣;

  3.2角骤、name: 類型(必填):String 指定任務的名稱(不應該有空格);

    3.3、deps: 類型(可選):StringArray邦尊,該任務依賴的任務(注意:被依賴的任務需要返回當前任務的事件流背桐,請參看下面示例);

JavaScript
1234567891011
gulp.task('testLess', function () {return gulp.src(['less/style.less']).pipe(less()).pipe(gulp.dest('./css'));});gulp.task('minicss', ['testLess'], function () { //執(zhí)行完testLess任務后再執(zhí)行minicss任務gulp.src(['css/*.css']).pipe(minifyCss()).pipe(gulp.dest('./dist/css'));});

    3.4蝉揍、fn: 類型(必填):Function 該任務調用的插件操作链峭;

4、gulp.watch(glob [, opts], tasks) or gulp.watch(glob [, opts, cb])
4.1又沾、說明:watch方法是用于監(jiān)聽文件變化弊仪,文件一修改就會執(zhí)行指定的任務;

    4.2杖刷、glob: 需要處理的源文件匹配符路徑励饵。類型(必填):String or StringArray;

     4.3滑燃、opts: 類型(可選):Object 具體參看[https://github.com/shama/gaze]    (https://github.com/shama/gaze)役听;

      4.4、tasks: 類型(必填):StringArray 需要執(zhí)行的任務的名稱數(shù)組表窘;

      4.5典予、cb(event): 類型(可選):Function 每個文件變化執(zhí)行的回調函數(shù);

JavaScript
123456789
gulp.task('watch1', function () {gulp.watch('less//.less', ['testLess']);});gulp.task('watch2', function () {gulp.watch('js//.js', function (event) {console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
});
});

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末乐严,一起剝皮案震驚了整個濱河市瘤袖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌昂验,老刑警劉巖捂敌,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異既琴,居然都是意外死亡黍匾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門呛梆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人磕诊,你說我怎么就攤上這事填物。” “怎么了霎终?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵滞磺,是天一觀的道長。 經常有香客問我莱褒,道長击困,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮阅茶,結果婚禮上蛛枚,老公的妹妹穿的比我還像新娘。我一直安慰自己脸哀,他們只是感情好蹦浦,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撞蜂,像睡著了一般盲镶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蝌诡,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天溉贿,我揣著相機與錄音,去河邊找鬼浦旱。 笑死宇色,一個胖子當著我的面吹牛,可吹牛的內容都是我干的闽寡。 我是一名探鬼主播代兵,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼爷狈!你這毒婦竟也來了植影?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤涎永,失蹤者是張志新(化名)和其女友劉穎思币,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體羡微,經...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谷饿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了妈倔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片博投。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖盯蝴,靈堂內的尸體忽然破棺而出毅哗,到底是詐尸還是另有隱情,我是刑警寧澤捧挺,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布虑绵,位于F島的核電站,受9級特大地震影響闽烙,放射性物質發(fā)生泄漏翅睛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捕发。 院中可真熱鬧疏旨,春花似錦、人聲如沸爬骤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽霞玄。三九已至骤铃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坷剧,已是汗流浹背惰爬。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留惫企,地道東北人撕瞧。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像狞尔,于是被迫代替她去往敵國和親丛版。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內容

  • gulpjs是一個前端構建工具偏序,與gruntjs相比页畦,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單研儒,學...
    依依玖玥閱讀 3,149評論 7 55
  • 1豫缨、gulp的安裝 首先確保你已經正確安裝了nodejs環(huán)境。然后以全局方式安裝gulp: npm install...
    F_imok閱讀 2,364評論 1 11
  • 在現(xiàn)在的前端開發(fā)中端朵,前后端分離好芭、模塊化開發(fā)、版本控制冲呢、文件合并與壓縮舍败、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,433評論 1 32
  • 對網站資源進行優(yōu)化,并使用不同瀏覽器測試并不是網站設計過程中最有意思的部分敬拓,但是這個過程中的很多重復的任務能夠使用...
    懵逼js閱讀 1,061評論 0 8
  • 編輯于2015年 轉載自某作者的譯文 作者要是看到請聯(lián)系我注明出處 對網站資源進行優(yōu)化邻薯,并使用不同瀏覽器測試并不是...
    krock01閱讀 447評論 0 2