摘要:基本用法基本根據匹配文件,返回,可以通過方法傳遞給后續的插件。一般用法,把中的內容按照指定的寫成文件,會自動創建不存在的文件夾。,用來代理請求,可以把發送到指定的地址。常用于開發,作用同上,也用于匹配資源,但用起來簡單很多。
基本用法
// 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])
根據 glob 匹配文件,返回 stream,可以通過 .pipe() 方法傳遞給后續的插件。
gulp.dest(path[, options])
一般用法 .pipe(gulp.dest(path)),把 pipe 中的內容按照指定的 path 寫成文件,會自動創建不存在的文件夾。
注意,可以通過 .pipe 多次指定輸出的地方,具體請看 這里
gulp.task(name[, deps], fn)
定義名為 name 的任務,定義之后就可以在命令行中使用 gulp xxx 來執行任務。
deps 里面的任務全部完成后才會執行 fn
deps 里面的任務都是并行執行的,如果需要順序執行,需要特殊寫法。具體看 這里
gulp.watch(glob[, opts, cb])
監聽文件變化
不會監聽新文件(目錄),所以一般你會需要 gulp-watch
常用命令 (自定義)# for development mode gulp server # run test gulp test # for production mode gulp buildgulp server 流程
把 less, sass, 之類的文件編譯成 CSS,常用插件:
gulp-less
gulp-sass
創建 Web Server (with Live Reload),常用:
gulp-connect,用來創建 Web Server,其實還有其他選擇的,但多數都是利用 connect 來創建 Web Server 的。
node-proxy-middle,用來代理請求,可以把 /api/xxx 發送到指定的地址。(常用于 SPA 開發)
connect-modrewrite,匹配資源,如果不匹配就可以重定向到指定地址。(常用于 SPA 開發)
connect-history-api-fallback,作用同上,也用于匹配資源,但用起來簡單很多。(常用于 SPA 開發)
監聽文件變化,常用插件:
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,根據 glob 來刪除文件/目錄
壓縮文件
gulp-htmlmin,壓縮 html 文件
gulp-minify-html,同上
gulp-cssmin,壓縮 css 文件
gulp-minify-css,同上,封裝了 clean-css,star 比上面的多
gulp-uglify,混淆 JavaScript 代碼
gulp-usemin,合并指定 block 中的文件
gulp-rev,給靜態文件加上版本號,如 app.js -> app-d41d8cd98f.js
復制其他文件到 dist/
gulp.src(...).pipe(gulp.dest(...))
實例代碼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/
參考資料英文文檔
中文文檔
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/85894.html
摘要:利用處理和或者或者文件目錄項目根目錄安裝包依賴之后自動生成的編譯后的文件放到這里安裝包依賴在中到項目目錄,然后會自動安裝里面寫的插件,根據自己項目所需要的插件來安裝下面是我的項目的一些依賴清除文件合并文件編 利用gulp處理js和less或者sass或者css 文件目錄 /項目根目錄-gulpfile.js-package.json-/images-/src--/less--/js--...
摘要:當然需要的工具不只有這些,其他的一些可選工具還有文件壓縮壓縮時用到的文件重命名檢查一般編輯器自帶校驗提示工具等等,具體根據項目需要安裝。 gulp 前端自動化構建工具 需要配置nodejs環境, 利用npm安裝全局gulp,安裝后可以輸入gulp指令。 npm install gulp -g 創建項目目錄、初始化npm包、gulp npm init gulp init 下載gul...
摘要:話不多說,今天的主題是使用打造傳統項目的前端工作流。是一個廣泛使用的轉碼器,可以將代碼轉為代碼,從而在現有環境執行。這意味著,你可以用的方式編寫程序,又不用擔心現有環境是否支持。 概述 最近前端一直是一個火熱的話題,前端技術棧也是伴隨著nodejs的出現而更替的飛快,導致大部分前端開發者曾一度迷茫在這各種技術選型上,比如前端自動化工具就有Grunt,Gulp,Webpack,Fis3等...
摘要:所以它在某些程度上,跟的功能有些相同。嚴格上講,模塊化不是他強調的東西,他旨在規范前端開發流程。更是明顯強調模塊化開發,而那些文件壓縮合并預處理等功能,不過是他附帶的功能。 1. webpack 是什么? showImg(https://segmentfault.com/img/remote/1460000012293461); 先來說一下 webpack 是什么。 webpack 的...
摘要:流式構建改變了底層的流程控制,大大提高了構建工作的效率和性能,給用戶的直觀感覺就是更快。我的看法關于流式構建,短短幾句話無法講清它的來龍去脈,但是在的世界里,確實是至關重要的。 Grunt 一直是前端領域構建工具(任務運行器或許更準確一些,因為前端構建只是此類工具的一部分用途)的王者,然而它也不是毫無缺陷的,近期風頭正勁的 gulp.js 隱隱有取而代之的態勢。那么,究竟是什么使得 g...
閱讀 2903·2021-11-22 09:34
閱讀 1227·2021-11-19 09:40
閱讀 3349·2021-10-14 09:43
閱讀 3581·2021-09-23 11:22
閱讀 1614·2021-08-31 09:39
閱讀 896·2019-08-30 15:55
閱讀 1424·2019-08-30 15:54
閱讀 870·2019-08-30 15:53