使用npm run来进行任务自动化,原文参见substack博客
在node.js社区,最近很流行使用Grunt.js来进行任务管理。但是substack(mkdirp的作者)却对这个没有产生多少兴趣,他认为使用npm run命令就足够了。下面是对他原话的翻译:
现在JavaScript项目有一些不错的工具来进行自动化构建,但是我从没对这些东西产生过兴趣。因为仅需要一点点配置,这个很少人知道的命令
npm run
已经很完美地解决了我的需求。
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 start
, npm test
相当于npm run test
。因此,我们可以在scripts域里放置一些其它操作,使用npm run ***
来执行。
在执行npm run ***
的时候,npm会首先会自动查找项目下__node_modules__这个文件夹里相应库中bin目录下的可执行文件,然后会查找到全局(即使用npm install -g ***
安装的)可执行文件。所以不必使用全局安装,只需要把项目所需的类库放在 dependencies 与 devDependencies 这两个目录下即可。
在scripts域中填写相应的命令
substack在其文章中分享了一系列命令,如压缩JS文件,监视JS、CSS文件变动等一系列操作。有很多本人也没有亲自试过。但其中命令与shell命令相似,你可以直接填写类似于在shell中执行的命令。如:
"buildjs":"jshint abc.js; uglifyjs abc.js > dist/abc.min.js"
在其中可以使用; | > <
之类的符号,用法与shell中使用一致。
关于使用Grunt.js与Make
在node.js社区中,很多模块使用Grunt,一些比较老派的程序员可以还在使用Make。其实,使用什么构建工具不重要,关键只要用得好。Grunt.js有它的优势,纯JavaScript,Gruntfile.js里可以执行一些更复杂的操作。但不是每个模块都为Grunt写了适配的模块,有很多模块并不依附于Grunt,第三方模块可能更新比较慢,质量参差不齐。
附:本人一个小项目的package.json文件,其中使用了mocha、blanket、jshint。
来源:oschina
链接:https://my.oschina.net/u/942329/blog/181493