西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)編程開發(fā)javascript|JQuery → nodejs版本的腳本壓縮和compo工具怎么使用?

nodejs版本的腳本壓縮和compo工具怎么使用?

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2012/5/29 17:43:32字體大。A-A+

作者:佚名點(diǎn)擊:32次評(píng)論:0次標(biāo)簽: nodejs

nodejs編輯器V1.02 官網(wǎng)綠色版
  • 類型:文本編輯大小:1.8M語(yǔ)言:中文 評(píng)分:5.0
  • 標(biāo)簽:
立即下載

對(duì)于前臺(tái)開發(fā)而言,為了降低文件大小,js文件和css文件的壓縮和組合幾乎是默認(rèn)的規(guī)矩。
我們利用YUI Compressor 和 google Compiler 可以很容易的完成文件的壓縮。 甚至 yui compressor 本身都已經(jīng)支持 多文件的批量壓縮。
但是,為了更好的處理這些機(jī)械化的事情,我們通常還是需要腳本來(lái)輔助,讓這些工作可以更好的自動(dòng)化,可配置化。

網(wǎng)上有很多類似的腳本工具,或者有的也已經(jīng)編譯成了可視化的工具來(lái)使用。

我自己以前也寫過(guò)python版本的,也用過(guò)同事寫的類似的腳本,基本也都是python版本的。鑒于大多數(shù)前端的攻城師們對(duì)js更為熟悉,所以,這里也提供一個(gè)簡(jiǎn)易的nodejs 版本的。下午花了3個(gè)小時(shí)寫的。

NodeCC –> Node Compressor and Compoer

代碼很簡(jiǎn)單,基本就是讀文件,寫文件,調(diào)用系統(tǒng)jar命令 使用 yuicompressor 壓縮文件。
源碼托管在:github.com/hongru/nodeCC 上,100行左右。

編碼中需要注意的幾個(gè)地方】

nodejs中fileSystem buffer的概念,簡(jiǎn)單的可以理解成文本數(shù)據(jù)流,所以,為了得到我們常見的文本,注意 readFile 后 toString的使用。

生成新文件時(shí),路徑是否存在的判斷,如果不存在,生成指定目錄時(shí),由于node本身的mkdir不支持多級(jí)目錄,所以這里需要自己來(lái)處理多級(jí)目錄的遞歸生成。
有兩種方式,一種是利用child_process 創(chuàng)建一個(gè)子進(jìn)程調(diào)用系統(tǒng)命令 mkdir -p.
另一種就是分析路徑,一級(jí)一級(jí)遞歸創(chuàng)建目錄。代碼參考https://gist.github.com/2817910

/* mkdir -p for node */  

var fs = require('fs'),  

    path = require('path');  

function mkdirpSync (pathes, mode) {  

    mode = mode || 0777;  

    var dirs = pathes.trim().split('/');  

    if (dirs[0] == '.') {  

        // ./aaa  

        dirs.shift();  

    }  

    if (dirs[0] == '..') {  

        // ../aaa  

        dirs.splice(0, 2, dirs[0] + '/' + dirs[1]);  

    }  

    dirs.length && mkdir(dirs.shift());  

    // mkdir  

    function mkdir (d) {  

        if (!path.existsSync(d)) {  

            fs.mkdirSync(d, mode);  

        }  

        dirs.length && mkdir(d + '/' + dirs.shift());  

    }  

}  

// eg  

//mkdirpSync('hongru/me');  

通過(guò)child_process 的spawn 來(lái)調(diào)用系統(tǒng)命令,比如 ls, java 等。然后通過(guò)stdout 和 stderr 來(lái)監(jiān)聽獲得 命令所返回的log或者error信息。

【使用方法】

當(dāng)然,因?yàn)槭莕odejs版本的,所以自然需要安裝nodejs,官方有提供詳細(xì)說(shuō)明

因?yàn)橛昧薺ar包 yuicompressor.jar, 所以,需要安裝 JAVA的sdk,安裝過(guò)程也很簡(jiǎn)單,不會(huì)的搜一下即可。

最后,關(guān)于config.json 文件的配置,很簡(jiǎn)單,都是兩個(gè)字段,“source”和“target”,source代表源路徑文件,target表示壓縮之后生成的文件路徑。
支持目錄級(jí)別。
另外,如果source字段為一個(gè)數(shù)組的話,會(huì)將這個(gè)數(shù)組里面的文件按照順序合并,然后壓縮生成到指定target的路徑。

所以,config.json看起來(lái)會(huì)像是這個(gè)樣子:

{  

    "css-test": {  

        "source": "test/css/",  

        "target": "test/public/css/"  

    },  

    "normal-file-compress": {  

        "source": "test/test.js",  

        "target": "test/test.min.js"  

    },  

    "normal-dir-compress": {  

        "source": "test/js/",  

        "target": "test/public/js/"  

    },  

    "compress-and-merge": {  

        "source": [  

            "test/js/a.js",  

            "test/js/b.js"  

        ],  

        "target": "test/public/js/ab.js"  

    }  

}  

將帶有 yuicompressor.jar 的tools/ ,主腳本 nodecc.js, 以及配置好的config.json 放置在同一目錄下,然后執(zhí)行

node nodecc.js  

即可。

好了,工具很簡(jiǎn)單,代碼也很簡(jiǎn)單,希望能給有需要的同學(xué)提供一點(diǎn)點(diǎn)幫助

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)