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

資訊專欄INFORMATION COLUMN

gulp自動(dòng)化打包(上)

roland_reed / 1979人閱讀

摘要:自動(dòng)化打包上文章概述本文分為上下兩篇,上篇主要介紹一些常用的插件也是此次打包主要用的插件,而下篇主要以一個(gè)項(xiàng)目為例,從本地出合適的版本,壓縮合并到最后打成包,發(fā)送至指定目錄,做一個(gè)全面的演示。

gulp自動(dòng)化打包(上) 文章概述

本文分為上下兩篇,上篇主要介紹一些常用的gulp插件(也是此次打包主要用的gulp插件),而下篇主要以一個(gè)demo項(xiàng)目為例,從本地checkout出合適的git版本,壓縮、合并、到最后打成zip包,發(fā)送至指定目錄,做一個(gè)全面的演示。
流程預(yù)覽:

項(xiàng)目結(jié)構(gòu)

首先,有一個(gè)類似于這樣的項(xiàng)目結(jié)構(gòu)

圖中主要演示項(xiàng)目中大概會(huì)有的幾種文件類型,fonts(ttf,svg),image(jpg,png),js,less(sass),實(shí)際項(xiàng)目會(huì)復(fù)雜得多,開始一個(gè)項(xiàng)目的時(shí)候,可以直接從git上拿一個(gè)angular-seed(webpack-seed)改。

開始使用gulp 下載gulp

開始玩gulp之前,要確定自己有nodejs的環(huán)境,沒有的話,先去弄個(gè)nodejs,這個(gè)比較簡(jiǎn)單,直接在https://nodejs.org/en/,下載一個(gè)對(duì)應(yīng)開發(fā)環(huán)境的nodejs,然后一路next,路徑默認(rèn)就好,window下自定義了路徑后,就不是全局的了,需要自己再配環(huán)境變量,圖省事的話,就一路next到finish。

ok,安裝好nodejs之后,在項(xiàng)目的src目錄下(與index.html的同級(jí)目錄)建立一個(gè)package.json文件與gulpfile.js(這個(gè)名字要對(duì),不然命令行識(shí)別不了,項(xiàng)目中有時(shí)建立兩個(gè)gulp的js文件,如果兩個(gè)都含有同一任務(wù),不特殊說明的話,命令行只執(zhí)行文件名為gulpfile.js的任務(wù)),在命令行輸入
npm install gulp --save-dev(之前沒有安裝過gulp的話,執(zhí)行npm install gulp -g --save-dev)指令,
"--save-dev"表示在安裝gulp之后,將安裝的信息保存在package.json文件,以便之后利用package.json文件去install相關(guān)插件(多人開發(fā)尤其要注意保存安裝信息),創(chuàng)建gulp成功后,目錄結(jié)構(gòu)變?yōu)?br>
之后所有的gulp插件都以此方式安裝,即npm install xx --save-dev

gulp插件詳細(xì)介紹

按照實(shí)際的打包順序, 我依次會(huì)介紹gulp-git、gulp-htmlmin、gulp-uglify、gulp-concat、gulp-ng-annotate(如果不是angular框架不需要)、gulp-less、gulp-minify-css、minimist、del、gulp-zip、gulp-ftp、run-sequence

gulp-git

gulp-git主要的作用是通過gulp腳本,來執(zhí)行一些git的操作,gulp-git插件基本上可以完成所有常用的git操作,比如add、commit、push等等,還可以查看git-log,十分方便,用法也非常簡(jiǎn)單,比如下面是一段獲取git倉庫中tag為v1.0.0的代碼(也可以checkout分支名):

var git = require("gulp-git");
gulp.task("checkout", function () {
  git.checkout("v1.0.0", function (err) {
    if (err) throw err;
  });
})

詳細(xì)的gulp-git使用方法,請(qǐng)參照https://github.com/stevelacy/...。

gulp-htmlmin

就是一個(gè)壓縮html的插件,沒什么特別要講的,這邊也直接拿網(wǎng)上的一個(gè)常用配置來演示。

var htmlmin = require("gulp-htmlmin");
gulp.task("testHtmlmin", function () {
    var options = {
        removeComments: true,//清除HTML注釋
        collapseWhitespace: true,//壓縮HTML
        collapseBooleanAttributes: true,//省略布爾屬性的值  ==> 
        removeEmptyAttributes: true,//刪除所有空格作屬性值  ==> 
        removeScriptTypeAttributes: true,//刪除
指明lm-library的路徑。
比較方便的做法就是直接把lm-library一起都算進(jìn)壓縮編譯的路徑當(dāng)中,給import的less文件添加reference的屬性,這樣就不會(huì)對(duì)lm-library.less進(jìn)行編譯了,也不會(huì)影響正常的less。
具體屬性參考:https://github.com/nfroidure/...。

minimist

這個(gè)插件,簡(jiǎn)單來說就是從命令行當(dāng)中提取參數(shù)。
開發(fā)中經(jīng)常會(huì)遇到的應(yīng)用場(chǎng)景是提供不同的參數(shù),即動(dòng)態(tài)參數(shù),對(duì)應(yīng)到gulp中,如果我們需要在命令行中手動(dòng)輸入某個(gè)參數(shù),此時(shí)就可以用minimist把他從命令行“提取”出來。
從minimist官方的文檔來看,exp為這樣:

$ node example/parse.js -a beep -b boop
{ _: [], a: "beep", b: "boop" }

文檔解釋也是一個(gè)‘-’為key,之后為value。但個(gè)人實(shí)際操作為兩個(gè)‘-’為key??赡茉蚴?,我下的插件不是看的文檔的這個(gè)庫,或者英文太差看錯(cuò)了。。。。。具體用的時(shí)候要自己注意了。
具體代碼為:

var argv = require("minimist")(process.argv.slice(2));
gulp.task("checkout", function () {
 var gitTag = argv.tag;
  git.checkout(gitTag, function (err) {
    if (err) throw err;
  });
})

cmd中輸入

gulp checkout --tag v1.0.0

此時(shí),gitTag就會(huì)被賦值為v1.0.0。
參考文檔為:https://github.com/substack/m...。

gulp-del

刪除目標(biāo)目錄,目標(biāo)文件,演示var del=require("gulp-del")
gulp.task("clean",function(){
return del(config.dist.basePath);
})易理解,就不詳細(xì)介紹了。

gulp-zip

將src中的各種文件,打成一個(gè)zip包,演示代碼:

var zip = require("gulp-zip");
gulp.task("zip", ()  {
         gulp.src("src/*")
        .pipe(zip("zipName.zip"))
        .pipe(gulp.dest("dist"));
});
gulp-ftp

將目標(biāo)文件,發(fā)送至FTP服務(wù)器,這邊有5個(gè)參數(shù)是必填的,分別為:
host:服務(wù)器地址(必須)
port:服務(wù)器端口(必須)
user:ftp賬戶(必須) // 如果FTP沒有訪問限制,可以不填
pass:ftp賬戶密碼(必須)// 如果FTP沒有訪問限制,可以不填
remote: 對(duì)應(yīng)的服務(wù)器文件地址(必須)
logger:輸出文件列表名稱,默認(rèn)在項(xiàng)目根目錄生成文件(可選,默認(rèn):logger.txt)
froot: 提單文件前綴(可選,默認(rèn):/usr/local/imgcache/htdocs)
exp:體驗(yàn)環(huán)境地址(可選,默認(rèn)null)
pro:正式環(huán)境地址(可選,默認(rèn)null)
參考地址:https://github.com/sindresorh...。
演示代碼:
gulp.task("ftp", function () {

  return gulp.src("dist_zip/*")
    .pipe(ftp({
      host: "testHost",
      port: 21,
      //user: "anonymous",
      //pass:null,
      remotePath: "path/"
    }));
});
run-sequence

一個(gè)串行方式跑gulp任務(wù)的插件,在實(shí)際場(chǎng)景中,不允許我們同時(shí)跑很多任務(wù),因?yàn)槿蝿?wù)之間往往是相互依賴的,此時(shí)run-sequence就是一個(gè)很好的選擇,他可以讓多個(gè)任務(wù)按照寫入順序執(zhí)行,同時(shí)可以控制哪些任務(wù)并行跑,哪些按照順序跑。
參考代碼:

 var runSequence = require("run-sequence");
gulp.task("publish", function (callback) {
  runSequence("clean",["html", "js","less", "copy"],"zip_new",callback);
});

比如上述代碼,執(zhí)行順序?yàn)?、"clean"。2、["html", "js","less", "copy"]。3、"zip_new"。
當(dāng)然也可以在gulp中使用依賴注入的方法。
比如:

gulp.task("two", ["one"], function() {
    //任務(wù)two,會(huì)在任務(wù)one結(jié)束之后執(zhí)行
});

但個(gè)人還是更喜歡,用run-sequence因?yàn)橐坏┮蕾図?xiàng)變多之后,普通的注入,相互之間依賴過后,可讀性就會(huì)變差,而sequence會(huì)讓代碼看起來更優(yōu)雅,寫起來也更簡(jiǎn)單。

上篇小結(jié)

本文上篇主要講了gulp的安裝,以及常用的插件的介紹,gulp插件超級(jí)多。。本文介紹的這些,主要是下篇實(shí)際用到的,下篇會(huì)使用上述介紹的所有插件,來進(jìn)行一次較完整的打包,ok,上篇作為鋪墊就到這里。

這里是下篇傳送門。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/88019.html

相關(guān)文章

  • gulp動(dòng)化打包(下)

    摘要:到這里,已經(jīng)可以取出我們要打包的項(xiàng)目代碼了,下面開始進(jìn)行具體打包工作。這里用到的插件,代碼如下完整打包經(jīng)過以上,一個(gè)完整的如下流程圖 打包流程簡(jiǎn)介 本次打包大致過程是checkout出想要打包的git版本(可以是tag,也可以是branchName),然后依次讀取項(xiàng)目中的html、less、js進(jìn)行壓縮合并等操作,復(fù)制項(xiàng)目中所用到的第三方庫到輸出目錄(即plugins中的插件,比如lo...

    Salamander 評(píng)論0 收藏0
  • Gulp--手把手教你搭建前端動(dòng)化平臺(tái)

    摘要:前端的發(fā)展真的是快,前幾年還是刀耕火種的開個(gè)編輯器,幾行和代碼就能上瀏覽器跑了。是啥官方的解釋是基于流的自動(dòng)化構(gòu)建工具。把運(yùn)動(dòng)的半成品看成是數(shù)據(jù),那么流動(dòng)的數(shù)據(jù)就是流。分工明確才能提高效率,這是社會(huì)發(fā)展的經(jīng)驗(yàn)總結(jié)。 前端的發(fā)展真的是快,前幾年還是刀耕火種的開個(gè)編輯器,幾行html和js代碼就能上瀏覽器跑了。現(xiàn)在呢?各種包,各種庫,各種框架,各種編程范式。究其原因,就是我們高中社會(huì)課本中...

    LeviDing 評(píng)論0 收藏0
  • gulp+webpack工作流探索

    摘要:概述最近研究了下工作流,先說一下我司的情況,我司現(xiàn)在是端用直出,用構(gòu)建,部分就不進(jìn)行描述了,因?yàn)榫W(wǎng)上的構(gòu)建方法都是很成熟的了。 概述 最近研究了下工作流,先說一下我司的情況,我司現(xiàn)在是pc端用php直出,h5用vuejs構(gòu)建,vuejs部分就不進(jìn)行描述了,因?yàn)榫W(wǎng)上的構(gòu)建方法都是很成熟的了。以下是php直出,需要向后臺(tái)同學(xué)提供html文件的構(gòu)建方法。調(diào)試都是在本地調(diào)試的,調(diào)試完成后打包生...

    fancyLuo 評(píng)論0 收藏0
  • Javascript五十問——從源頭細(xì)說Webpack與Gulp

    摘要:前言與是目前圈子內(nèi)比較活躍的前端構(gòu)建工具。對(duì)于初學(xué)者來說,對(duì)這二者往往容易認(rèn)識(shí)不清,今天,就從事件的源頭,說清楚與。它可以將許多松散的模塊按照依賴和規(guī)則打包成符合生產(chǎn)環(huán)境部署的前端資源。打包后形成的文件出口。 前言:Webpack 與 gulp是目前圈子內(nèi)比較活躍的前端構(gòu)建工具。網(wǎng)上有很多二者比較的文章,面試中也會(huì)經(jīng)常遇到gulp,Webpack的區(qū)別這樣的問題。對(duì)于初學(xué)者來說,對(duì)這二...

    lwx12525 評(píng)論0 收藏0
  • 如何打造一個(gè)令人愉悅的前端開發(fā)環(huán)境(一)

    摘要:我覺得這方面的原因是當(dāng)時(shí)對(duì)和的依賴,導(dǎo)致大家對(duì)的興趣不弄,錯(cuò)過了最佳時(shí)機(jī),這個(gè)其實(shí)跟百度自己的的技術(shù)棧有很大關(guān)系。這個(gè)阮一峰對(duì)于前端構(gòu)建的變化吐槽過,說新的構(gòu)建工具就是的構(gòu)建工具。 文章來源 最近幾年,前端發(fā)展越來越迅速,各種萌新加入了前端這個(gè)大家庭,大有趕IOS、超Android的趨勢(shì)呀!同時(shí),萌新們提出了各種前端工作問題,除了最基礎(chǔ)的html、css、js三板斧之外,最讓人頭疼的應(yīng)...

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

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

0條評(píng)論

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