使用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。工具