No Grunt. substack风格的使用npm run来自动化任务

孤人 提交于 2020-05-01 22:05:00

使用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 startnpm test相当于npm run test。因此,我们可以在scripts域里放置一些其它操作,使用npm run *** 来执行。

在执行npm run ***的时候,npm会首先会自动查找项目下__node_modules__这个文件夹里相应库中bin目录下的可执行文件,然后会查找到全局(即使用npm install -g ***安装的)可执行文件。所以不必使用全局安装,只需要把项目所需的类库放在 dependenciesdevDependencies 这两个目录下即可。


在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。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!