問:為什么要用在項目中使用前端自動化構建工具,gulp或其他等等。
答:先假設你沒有使用這等前端自動化構建工具,你是如何構建一個項目的?你肯定是先用一個文件夾裝好你的HTML、CSS、JS、圖片等等靜態資源,然后開始看著設計稿寫HTML結構,編輯css樣式表,js動態效果以及各種ajax交互。好,當你完成了你的項目,已是黃昏時。。。你提交代碼之前,老大交代:css,js,img這些都要給我壓縮下才能往上放,你又苦逼地區在線網站壓縮css、js、壓縮圖片,這一切都是你親力親為去做的。這些機器式的工作本不該打代碼的青年去親自完成,想辦法偷個懶唄,能不能在你一邊工作的時候,誰可以替你進行這些工作,到你項目完成,也就直接擁有了這些壓縮的靜態資源。Gulp可以做到,而且不止是這些~
開始使用Gulp:
1、全局安裝gulp:
$ npm install --global gulp ?或 ?npm install -g gulp
2、作為項目的開發依賴(devDependencies)安裝:
$ npm install --save-dev gulp
note:先在項目根目錄下使用npm init命令 根據提示生成一個package.json吧——如果沒有的話
3、在項目根目錄下創建一個名為gulpfile.js的文件:
var gulp = require('gulp');
gulp.task('default', function() {
? ? // 這里寫你要開啟的默認任務
})
4、運行gulp:
$ gulp 或 gulp <task> <otherTask>
Gulp所提供的的API:
1、gulp.src(globs[, options])
告訴Gulp你要將哪些文件執行任務(Gulp使用node-glob來從你指定的glob里面獲取文件)
options.buffer(如果該項被設置為false,那么將會以 stream 方式返回file.contents而不是文件 buffer 的形式。這在處理一些大文件的時候將會很有用。)
options.read (false將不會讀取文件)
options.base(string型,將會加在glob前,有點像基地址)
舉例子:? gulp.src(['js/**/*.js', '!js/**/*.min.js']) ?“ * ” 代表任意," ! "代表排除
那這句話的意思就是:選中與gulpfile.js同級下的js文件夾,下的所有文件夾里的所有.js后綴的文件,并且排除掉所有文件名尾部為.min的.js文件
截取一小段自己用的配置:
這里定義一個task名為css:
作用是將我指定路徑下的scss文件編譯成css文件扔進指定文件夾后,再壓縮、重命名再扔進另一個指定的文件夾的。
2、dest(path[, options])
能被 pipe 進來,并且將會寫文件。并且重新輸出(emits)所有數據,因此你可以將它 pipe 到多個文件夾。如果某文件夾不存在,將會自動創建它。
options.cwd輸出目錄的cwd參數,只在所給的輸出目錄是相對路徑時候有效。
options.mode八進制權限字符,用以定義所有在輸出目錄中所創建的目錄的權限。
3、gulp.task(name[, deps], fn)