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

相关文章
相关标签/搜索