熟悉?vue || npm?的童鞋都知道础倍,nodejs腳本執(zhí)行的任務(wù)大多都寫在package.json中捅膘,如下圖所示郁妈。不過npm的作用不僅如此堡距,利用好之后能夠很強(qiáng)的提高工作效率(有時(shí)候所謂提高效率也就是人懶,就得想辦法讓機(jī)器多做點(diǎn)事兒)媚送。
執(zhí)行腳本任務(wù)
node.js有兩個(gè)特殊腳本任務(wù) ?start ?test中燥,執(zhí)行這兩個(gè)任務(wù)可以簡(jiǎn)寫的方式
npm run start? == npm start //# 執(zhí)行"start"指定的腳本
npm run test == npm test //
其他任務(wù)不可省略,務(wù)必以 npm run 方式執(zhí)行
npm run dev ? ? //開發(fā)環(huán)境啟動(dòng)vue
npm run build ? ? //打包生產(chǎn)環(huán)境需要文件
組合腳本任務(wù)
管道(|) || 串行(&)
熟悉gulp的都知道塘偎,gulp任務(wù)的執(zhí)行類方式?管道疗涉、流?的方式,比如處理sass文件吟秩,首先將sass轉(zhuǎn)換成css文件咱扣,再對(duì)css文件進(jìn)行補(bǔ)全,之后進(jìn)行壓縮涵防,然后重命名闹伪,最后輸出到預(yù)設(shè)目錄中。簡(jiǎn)單說就是一個(gè)任務(wù)完成之后再繼續(xù)下一個(gè)任務(wù)。
當(dāng)我們?cè)趫?zhí)行腳本任務(wù)時(shí)可能也會(huì)有這樣的需求偏瓤,比如之前寫過的?vue.js(SCP2)打包后自動(dòng)上傳到服務(wù)器?中杀怠,我直接將上傳的任務(wù)寫在?build.js?中,雖然能達(dá)到預(yù)想的目的厅克,不過仔細(xì)想想這種處理方式還是不太合理(并不是每次打包后都會(huì)將服務(wù)端的文件覆蓋)赔退,所以更好的方式將上傳的代碼單獨(dú)寫在一個(gè)文件中,然后在package.json中添加一個(gè)任務(wù)证舟。
"scp_testServer": " node build/build.js | node scp/testServer.js" //管道的方式
"scp_testServer": " node build/build.js?&&?node scp/testServer.js" //串行的方式
并行 (&)
有時(shí)候我們需要并行地執(zhí)行多個(gè)命令的功能硕旗。此時(shí)使用并行符號(hào)(&)可以把子命令作為后臺(tái)任務(wù)并行執(zhí)行。
"scripts": {
// 并行地執(zhí)行watch-js褪储,watch-less和watch-server
"watch":"npm run watch-js & npm run watch-less & npm run watch-server",
"watch-js":"watchify app/js/main.js -t reactify -o static/bundle.js -dv",
"watch-less":"nodemon --watch app/less/*.less --ext less --exec 'npm run build-less'",
"watch-server":"nodemon --ignore app --ignore static server.js"
},
npm 不止是包管理工具卵渴,通過合理的配置任務(wù),可以提高我們的工作效率鲤竹。
參考原文:http://anders.janmyr.com/2014/03/running-scripts-with-npm.html