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

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

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

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

作者:佚名點擊:32次評論:0次標簽: nodejs

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

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

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

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

NodeCC –> Node Compressor and Compoer

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

編碼中需要注意的幾個地方】

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

生成新文件時,路徑是否存在的判斷,如果不存在,生成指定目錄時,由于node本身的mkdir不支持多級目錄,所以這里需要自己來處理多級目錄的遞歸生成。
有兩種方式,一種是利用child_process 創(chuàng)建一個子進程調(diào)用系統(tǒng)命令 mkdir -p.
另一種就是分析路徑,一級一級遞歸創(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');  

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

【使用方法】

當(dāng)然,因為是nodejs版本的,所以自然需要安裝nodejs,官方有提供詳細說明

因為用了jar包 yuicompressor.jar, 所以,需要安裝 JAVA的sdk,安裝過程也很簡單,不會的搜一下即可。

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

所以,config.json看起來會像是這個樣子:

{  

    "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  

即可。

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

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

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

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