NPM也提供了自動化的工具,雖然有點初級,可是不少時候夠用,而且不須要學習 Grunt 這樣的任務自動化工具,減掉一個額外的學習負擔。npm
假設咱們使用它來作js文件的混淆,咱們須要以下組件:json
uglify-es
複製代碼
首先安裝在繼續學習前,你須要先將它安裝到環境中:app
npm install --save-dev uglify-es
複製代碼
假定你有一個項目,應該有一個配置好package.json
,咱們可使用以下命令生成此文件:工具
npm init -y
複製代碼
NPM使用文件package.json內的script部分鍵來描述自動化工具執行,像是這樣:學習
"scripts": {
"mangle": "mkdir -p dist/js && uglifyjs src/*.js -m --mangle-props -c toplevel -o dist/app.js"
}
複製代碼
咱們生成一個測試用文件:測試
touch src/action.jsthis
咱們就是生成此文件的對應壓縮文件。內容以下:spa
var x = {
baz_: 0,
foo_: 1,
calc: function() {
return this.foo_ + this.baz_;
}
};
x.bar_ = 2;
x["baz_"] = 3;
console.log(x.calc());
複製代碼
如今,你只須要執行以下命令,便可生產壓縮的JS文件了:code
npm run mangleip
你會發現此壓縮文件已經放置到dist目錄以內。可使用任何文本工具查看文件內容,好比這樣:
cat dist/app.js
複製代碼
輸出是這樣的:
var x={o:0,t:1,_:function(){return this.t+this.o},i:2,o:3};console.log(x._())
複製代碼
在package.json內部的script指定的任何一個鍵(這裏是mangle),均可以把它做爲參數傳遞爲npm run,做爲一個命令使用。
npm run mangle
複製代碼
內部執行實際上是使用了鏈接符號&&鏈接起來的兩個命令,&&表示前一個執行成功纔會執行下一個命令,不然就中止繼續執行。命令:
mkdir -p dist
複製代碼
建立一個目錄,參數-p說明沒有沒有的話就建立,有了就沒必要建立了。命令:
uglifyjs src/*.js -m -c -o dist/app.js
複製代碼
執行文件壓縮。參數-m表示壓扁 -c表示壓縮,-o指定目標文件。