摘要:基本用法基本根據(jù)匹配文件,返回,可以通過(guò)方法傳遞給后續(xù)的插件。一般用法,把中的內(nèi)容按照指定的寫(xiě)成文件,會(huì)自動(dòng)創(chuàng)建不存在的文件夾。,用來(lái)代理請(qǐng)求,可以把發(fā)送到指定的地址。常用于開(kāi)發(fā),作用同上,也用于匹配資源,但用起來(lái)簡(jiǎn)單很多。
基本用法
// gulpfile.js gulp.task("foo", function() { gulp.src(glob) .pipe(...) .pipe(...) .pipe(gulp.dest(...)) .pipe(...) .pipe(gulp.dest(...)) }); // shell $ gulp foo基本 API
gulp.src(glob[, options])
根據(jù) glob 匹配文件,返回 stream,可以通過(guò) .pipe() 方法傳遞給后續(xù)的插件。
gulp.dest(path[, options])
一般用法 .pipe(gulp.dest(path)),把 pipe 中的內(nèi)容按照指定的 path 寫(xiě)成文件,會(huì)自動(dòng)創(chuàng)建不存在的文件夾。
注意,可以通過(guò) .pipe 多次指定輸出的地方,具體請(qǐng)看 這里
gulp.task(name[, deps], fn)
定義名為 name 的任務(wù),定義之后就可以在命令行中使用 gulp xxx 來(lái)執(zhí)行任務(wù)。
deps 里面的任務(wù)全部完成后才會(huì)執(zhí)行 fn
deps 里面的任務(wù)都是并行執(zhí)行的,如果需要順序執(zhí)行,需要特殊寫(xiě)法。具體看 這里
gulp.watch(glob[, opts, cb])
監(jiān)聽(tīng)文件變化
不會(huì)監(jiān)聽(tīng)新文件(目錄),所以一般你會(huì)需要 gulp-watch
常用命令 (自定義)# for development mode gulp server # run test gulp test # for production mode gulp buildgulp server 流程
把 less, sass, 之類的文件編譯成 CSS,常用插件:
gulp-less
gulp-sass
創(chuàng)建 Web Server (with Live Reload),常用:
gulp-connect,用來(lái)創(chuàng)建 Web Server,其實(shí)還有其他選擇的,但多數(shù)都是利用 connect 來(lái)創(chuàng)建 Web Server 的。
node-proxy-middle,用來(lái)代理請(qǐng)求,可以把 /api/xxx 發(fā)送到指定的地址。(常用于 SPA 開(kāi)發(fā))
connect-modrewrite,匹配資源,如果不匹配就可以重定向到指定地址。(常用于 SPA 開(kāi)發(fā))
connect-history-api-fallback,作用同上,也用于匹配資源,但用起來(lái)簡(jiǎn)單很多。(常用于 SPA 開(kāi)發(fā))
監(jiān)聽(tīng)文件變化,常用插件:
gulp-watch
示例代碼gulp.task("clean:css", function () { del.sync("app/styles/*.css"); }); gulp.task("less", ["clean:css"], function () { var stream = gulp .src("app/styles/main.less") .pipe(less()) .pipe(gulp.dest("app/styles/")); return stream; }); gulp.task("connect", function () { connect.server({ root: "./app", port: 9000, livereload: true, middleware: function (connect, o) { return [ (function () { var url = require("url"); var proxy = require("proxy-middleware"); var options = url.parse("http://localhost:3000/api"); options.route = "/api"; return proxy(options); })(), modRewrite([ "!.html|.js|.css|.swf|.jp(e?)g|.png|.gif|.eot|.woff|.ttf|.svg$ /index.html" ]) ]; } }); }); gulp.task("watch", function () { gulp .src("app/styles/**/*.less", {read: false}) .pipe(watch("app/styles/**/*.less", function () { return gulp .src("app/styles/main.less") .pipe(less()) .pipe(gulp.dest("app/styles/")) .pipe(connect.reload()); })); gulp .src(["app/scripts/**/*.js", "app/**/*.html"]) .pipe(watch(["app/scripts/**/*.js", "app/**/*.html"])) .pipe(plumber()) .pipe(connect.reload()); }); gulp.task("server", ["less", "connect", "watch"]);gulp build 流程
清理 dist/ 文件夾
del,根據(jù) glob 來(lái)刪除文件/目錄
壓縮文件
gulp-htmlmin,壓縮 html 文件
gulp-minify-html,同上
gulp-cssmin,壓縮 css 文件
gulp-minify-css,同上,封裝了 clean-css,star 比上面的多
gulp-uglify,混淆 JavaScript 代碼
gulp-usemin,合并指定 block 中的文件
gulp-rev,給靜態(tài)文件加上版本號(hào),如 app.js -> app-d41d8cd98f.js
復(fù)制其他文件到 dist/
gulp.src(...).pipe(gulp.dest(...))
實(shí)例代碼gulp.task("clean:build", function () { del.sync("dist/", {force: true}); }); gulp.task("minify", ["clean:build", "less"], function () { gulp .src("app/views/**/*.html") .pipe(htmlmin({collapseWhitespace: true})) .pipe(gulp.dest("dist/views")); gulp .src("app/index.html") .pipe(usemin({ js: [uglify(), rev()], css: [minifyCss(), "concat", rev()] })) .pipe(gulp.dest("dist/")); }); gulp.task("copyfonts", function () { gulp .src("app/styles/fonts/*") .pipe(gulp.dest("dist/fonts/")); }); gulp.task("build", ["clean:build", "minify", "copyfonts"]);出處
https://scarletsky.github.io/2015/08/14/use-gulp-for-front-end-workflow/
參考資料英文文檔
中文文檔
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/85894.html
摘要:利用處理和或者或者文件目錄項(xiàng)目根目錄安裝包依賴之后自動(dòng)生成的編譯后的文件放到這里安裝包依賴在中到項(xiàng)目目錄,然后會(huì)自動(dòng)安裝里面寫(xiě)的插件,根據(jù)自己項(xiàng)目所需要的插件來(lái)安裝下面是我的項(xiàng)目的一些依賴清除文件合并文件編 利用gulp處理js和less或者sass或者css 文件目錄 /項(xiàng)目根目錄-gulpfile.js-package.json-/images-/src--/less--/js--...
摘要:當(dāng)然需要的工具不只有這些,其他的一些可選工具還有文件壓縮壓縮時(shí)用到的文件重命名檢查一般編輯器自帶校驗(yàn)提示工具等等,具體根據(jù)項(xiàng)目需要安裝。 gulp 前端自動(dòng)化構(gòu)建工具 需要配置nodejs環(huán)境, 利用npm安裝全局gulp,安裝后可以輸入gulp指令。 npm install gulp -g 創(chuàng)建項(xiàng)目目錄、初始化npm包、gulp npm init gulp init 下載gul...
摘要:話不多說(shuō),今天的主題是使用打造傳統(tǒng)項(xiàng)目的前端工作流。是一個(gè)廣泛使用的轉(zhuǎn)碼器,可以將代碼轉(zhuǎn)為代碼,從而在現(xiàn)有環(huán)境執(zhí)行。這意味著,你可以用的方式編寫(xiě)程序,又不用擔(dān)心現(xiàn)有環(huán)境是否支持。 概述 最近前端一直是一個(gè)火熱的話題,前端技術(shù)棧也是伴隨著nodejs的出現(xiàn)而更替的飛快,導(dǎo)致大部分前端開(kāi)發(fā)者曾一度迷茫在這各種技術(shù)選型上,比如前端自動(dòng)化工具就有Grunt,Gulp,Webpack,F(xiàn)is3等...
摘要:所以它在某些程度上,跟的功能有些相同。嚴(yán)格上講,模塊化不是他強(qiáng)調(diào)的東西,他旨在規(guī)范前端開(kāi)發(fā)流程。更是明顯強(qiáng)調(diào)模塊化開(kāi)發(fā),而那些文件壓縮合并預(yù)處理等功能,不過(guò)是他附帶的功能。 1. webpack 是什么? showImg(https://segmentfault.com/img/remote/1460000012293461); 先來(lái)說(shuō)一下 webpack 是什么。 webpack 的...
摘要:流式構(gòu)建改變了底層的流程控制,大大提高了構(gòu)建工作的效率和性能,給用戶的直觀感覺(jué)就是更快。我的看法關(guān)于流式構(gòu)建,短短幾句話無(wú)法講清它的來(lái)龍去脈,但是在的世界里,確實(shí)是至關(guān)重要的。 Grunt 一直是前端領(lǐng)域構(gòu)建工具(任務(wù)運(yùn)行器或許更準(zhǔn)確一些,因?yàn)榍岸藰?gòu)建只是此類工具的一部分用途)的王者,然而它也不是毫無(wú)缺陷的,近期風(fēng)頭正勁的 gulp.js 隱隱有取而代之的態(tài)勢(shì)。那么,究竟是什么使得 g...
閱讀 2901·2021-11-22 09:34
閱讀 1223·2021-11-19 09:40
閱讀 3349·2021-10-14 09:43
閱讀 3578·2021-09-23 11:22
閱讀 1611·2021-08-31 09:39
閱讀 894·2019-08-30 15:55
閱讀 1422·2019-08-30 15:54
閱讀 864·2019-08-30 15:53