成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

利用 Gulp 處理前端工作流程

Yangder / 1532人閱讀

摘要:基本用法基本根據(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 build
gulp 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

相關(guān)文章

  • 利用gulp處理簡(jiǎn)單的前端問(wèn)題

    摘要:利用處理和或者或者文件目錄項(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--...

    PumpkinDylan 評(píng)論0 收藏0
  • gulp+mock實(shí)現(xiàn)前后端分離

    摘要:當(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...

    dailybird 評(píng)論0 收藏0
  • gulp-work-flow 前端工作流原來(lái)可以這么簡(jiǎn)單

    摘要:話不多說(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等...

    weakish 評(píng)論0 收藏0
  • webpack 3 零基礎(chǔ)入門(mén)教程 #1 - 介紹

    摘要:所以它在某些程度上,跟的功能有些相同。嚴(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 的...

    張紅新 評(píng)論0 收藏0
  • “流式”前端構(gòu)建工具——gulp.js 簡(jiǎn)介

    摘要:流式構(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...

    ShevaKuilin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<