熟悉?vue || npm?的童鞋都知道,nodejs腳本執行的任務大多都寫在package.json中,如下圖所示。不過npm的作用不僅如此,利用好之后能夠很強的提高工作效率(有時候所謂提高效率也就是人懶,就得想辦法讓機器多做點事兒)。
執行腳本任務
node.js有兩個特殊腳本任務 ?start ?test,執行這兩個任務可以簡寫的方式
npm run start? == npm start //# 執行"start"指定的腳本
npm run test == npm test //
其他任務不可省略,務必以 npm run 方式執行
npm run dev ? ? //開發環境啟動vue
npm run build ? ? //打包生產環境需要文件
組合腳本任務
管道(|) || 串行(&)
熟悉gulp的都知道,gulp任務的執行類方式?管道、流?的方式,比如處理sass文件,首先將sass轉換成css文件,再對css文件進行補全,之后進行壓縮,然后重命名,最后輸出到預設目錄中。簡單說就是一個任務完成之后再繼續下一個任務。
當我們在執行腳本任務時可能也會有這樣的需求,比如之前寫過的?vue.js(SCP2)打包后自動上傳到服務器?中,我直接將上傳的任務寫在?build.js?中,雖然能達到預想的目的,不過仔細想想這種處理方式還是不太合理(并不是每次打包后都會將服務端的文件覆蓋),所以更好的方式將上傳的代碼單獨寫在一個文件中,然后在package.json中添加一個任務。
"scp_testServer": " node build/build.js | node scp/testServer.js" //管道的方式
"scp_testServer": " node build/build.js?&&?node scp/testServer.js" //串行的方式
并行 (&)
有時候我們需要并行地執行多個命令的功能。此時使用并行符號(&)可以把子命令作為后臺任務并行執行。
"scripts": {
// 并行地執行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 不止是包管理工具,通過合理的配置任務,可以提高我們的工作效率。
參考原文:http://anders.janmyr.com/2014/03/running-scripts-with-npm.html