可能不少人會說如今提gulp也太落後了吧,但我想說寫點東西並非爲了討論它是否過期,而是來幫助咱們本身來記憶、整理和學習。任何工具,我須要,我纔去使用它,正如此時我須要gulp同樣。css
爲了效率而使用工具html
$ npm install --global gulp-cli
$ npm install --save-dev gulp
在項目根目錄下建立一個名爲 gulpfile.js 的文件:node
touch gulpfile.js
gulp.src(globs[, options])git
讀取目標源文件github
gulp.dest(path[, options])web
向目標路徑輸出結果npm
gulp.pipe()gulp
將目標文件經過插件處理api
gulp.watch(glob [, opts], tasks) 或 gulp.watch(glob [, opts, cb])瀏覽器
監視文件系統,而且能夠在文件發生改動時候作一些事情
gulp.task(name[, deps], fn): 任務
定義一個gulp任務
當配置完gulp.file後運行 gulp:
$ gulp
sass/scss編譯
js代碼校對
生成sprite雪碧圖
本地起一個websocket服務,實時刷新瀏覽器
gulp-changed
會首先把文件進行比對,若是文件沒有改動,則跳事後續任務,。gulp-changed
的對比功能更增強大,好比能夠知道導入/依賴的文件是否更改。http-proxy-middleware
路由代理中間件
如下是個人gulp文件,僅供交流。
'use strict'; const gulp = require("gulp"); /** * [sass sass/scss編譯] */ const sass = require("gulp-sass"); /** * [eslint js代碼檢測] */ const eslint = require('gulp-eslint'); /** * [connect 本地起一個websocket服務,實時刷新瀏覽器] */ const connect = require('gulp-connect'); /** * [changed 比較文件變更] * 默認狀況下,gulp只能檢測流中的文件是否更改。 * 若是您須要更高級的東西,好比知道導入/依賴的文件是否更改,則可使用該插件。 */ const changed = require('gulp-changed'); /** * [spritesmith 合併成雪碧圖] */ const spritesmith= ("gulp.spritesmith"); /** * [proxy 中間代理件] */ const proxy = require('http-proxy-middleware'); let Pathconfig = { sassCompilePath: __dirname + "/scss/**/*.scss", //須要編譯的scss文件路徑 sassDestPath: __dirname + "/css/", //編譯後的scss文件存放處 htmlSrcPath: __dirname + "/html/*.html", //監控的html路徑 jsSrcPath: __dirname + "/js/*.js", //監控的js文件路徑 } // html任務 gulp.task("html",function(){ gulp.src(Pathconfig.htmlSrcPath) .pipe(connect.reload()); }) // 樣式任務 gulp.task("stylus",function(){ gulp.src(Pathconfig.sassCompilePath) .pipe(changed(Pathconfig.sassDestPath)) .pipe(sass()) .pipe(gulp.dest(Pathconfig.sassDestPath)) .pipe(connect.reload()); }) // js任務 gulp.task("js",function(){ gulp.src([Pathconfig.jsSrcPath,'!node_modules/**']) .pipe(eslint()) .pipe(eslint.formatEach('compact', process.stderr)) .pipe(connect.reload()); }) // 監控變更 gulp.task("watch",function(){ gulp.watch([Pathconfig.htmlSrcPath], ['html']); gulp.watch([Pathconfig.sassCompilePath], ['stylus']); gulp.watch([Pathconfig.jsSrcPath], ['js']); }) //定義livereload任務,起一個本地服務 gulp.task('connect',function () { connect.server({ root: __dirname, port: 8000, livereload: true }); }); gulp.task("default",['connect','watch'])