使用npm run來進行任務自動化,原文參見substack博客node
在node.js社區,最近很流行使用Grunt.js來進行任務管理。可是substack(mkdirp的做者)卻對這個沒有產生多少興趣,他認爲使用npm run命令就足夠了。下面是對他原話的翻譯:nginx
如今JavaScript項目有一些不錯的工具來進行自動化構建,可是我從沒對這些東西產生過興趣。由於僅須要一點點配置,這個不多人知道的命令
npm run
已經很完美地解決了個人需求。git
通常node.js項目中都會有一個package.json文件,這個文件能夠手工編寫,但通常是使用npm init
這個命令來自動建立。它的做用大體至關於nginx中的nginx.conf這個文件。程序員
在package.json中有一個scripts域,npm查看這個域裏面的命令,而後執行相應的操做。好比npm start
就是查看scripts裏start相應的操做,npm test
就是查看scripts裏test相應的操做。這些命令都是npm run
的快捷操做。npm start
至關於npm run start
, npm test
至關於npm run test
。所以,咱們能夠在scripts域裏放置一些其它操做,使用npm run ***
來執行。github
在執行npm run ***
的時候,npm會首先會自動查找項目下__node_modules__這個文件夾裏相應庫中bin目錄下的可執行文件,而後會查找到全局(即便用npm install -g ***
安裝的)可執行文件。因此沒必要使用全局安裝,只須要把項目所需的類庫放在 dependencies 與 devDependencies 這兩個目錄下便可。shell
substack在其文章中分享了一系列命令,如壓縮JS文件,監視JS、CSS文件變更等一系列操做。有不少本人也沒有親自試過。但其中命令與shell命令類似,你能夠直接填寫相似於在shell中執行的命令。如:npm
"buildjs":"jshint abc.js; uglifyjs abc.js > dist/abc.min.js"
在其中可使用; | > <
之類的符號,用法與shell中使用一致。json
在node.js社區中,不少模塊使用Grunt,一些比較老派的程序員能夠還在使用Make。其實,使用什麼構建工具不重要,關鍵只要用得好。Grunt.js有它的優點,純JavaScript,Gruntfile.js裏能夠執行一些更復雜的操做。但不是每一個模塊都爲Grunt寫了適配的模塊,有不少模塊並不依附於Grunt,第三方模塊可能更新比較慢,質量良莠不齊。grunt
附:本人一個小項目的package.json文件,其中使用了mocha、blanket、jshint。工具