No Grunt. substack風格的使用npm run來自動化任務

使用npm run來進行任務自動化,原文參見substack博客node

在node.js社區,最近很流行使用Grunt.js來進行任務管理。可是substack(mkdirp的做者)卻對這個沒有產生多少興趣,他認爲使用npm run命令就足夠了。下面是對他原話的翻譯:nginx

如今JavaScript項目有一些不錯的工具來進行自動化構建,可是我從沒對這些東西產生過興趣。由於僅須要一點點配置,這個不多人知道的命令npm run已經很完美地解決了個人需求。git


package.json中的scripts

通常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 startnpm test至關於npm run test。所以,咱們能夠在scripts域裏放置一些其它操做,使用npm run *** 來執行。github

在執行npm run ***的時候,npm會首先會自動查找項目下__node_modules__這個文件夾裏相應庫中bin目錄下的可執行文件,而後會查找到全局(即便用npm install -g ***安裝的)可執行文件。因此沒必要使用全局安裝,只須要把項目所需的類庫放在 dependenciesdevDependencies 這兩個目錄下便可。shell


在scripts域中填寫相應的命令

substack在其文章中分享了一系列命令,如壓縮JS文件,監視JS、CSS文件變更等一系列操做。有不少本人也沒有親自試過。但其中命令與shell命令類似,你能夠直接填寫相似於在shell中執行的命令。如:npm

"buildjs":"jshint abc.js; uglifyjs abc.js > dist/abc.min.js"

在其中可使用; | > < 之類的符號,用法與shell中使用一致。json


關於使用Grunt.js與Make

在node.js社區中,不少模塊使用Grunt,一些比較老派的程序員能夠還在使用Make。其實,使用什麼構建工具不重要,關鍵只要用得好。Grunt.js有它的優點,純JavaScript,Gruntfile.js裏能夠執行一些更復雜的操做。但不是每一個模塊都爲Grunt寫了適配的模塊,有不少模塊並不依附於Grunt,第三方模塊可能更新比較慢,質量良莠不齊。grunt

附:本人一個小項目的package.json文件,其中使用了mocha、blanket、jshint。工具

相關文章
相關標籤/搜索