我最近遇到了load-grunt-tasks的有效魔力,但我想知道为什么它的使用似乎是例外而不是我见过的大多数例子中的规则。如果您不熟悉此模块,则执行以下操作:
此模块将读取package.json中的
dependencies/devDependencies/peerDependencies
并加载与提供的模式匹配的grunt任务。
例如,Gruntfile.js中的这个混乱:
grunt.loadNpmTasks('grunt-shell');
grunt.loadNpmTasks('grunt-sass');
grunt.loadNpmTasks('grunt-recess');
grunt.loadNpmTasks('grunt-sizediff');
grunt.loadNpmTasks('grunt-svgmin');
// and likely many, many more
...可以用简单的替换:
require('load-grunt-tasks')(grunt);
那么,这个单线是否有任何缺点?如果没有,那么为什么它不是在线示例中注册Grunt任务的标准呢?我无法在SO或The Googz上找到任何东西,对Node或Grunt不太熟悉,所以任何见解都会受到赞赏。
答案 0 :(得分:1)
据我所知,基本上只有一个缺点可能会超过优势:性能。如果您正在使用手表,则模块会在每次触发更改时加载组件。我有更大的项目,速度下降是显着的。您可以使用jit-grunt来解决问题,而另一方面,{{3}}与每个grunt模块(例如spritesmith)不兼容。
可能不那么重要的是单个负载模块的速度降低。 load-grunt-tasks在加载模块之前首先索引您的任务配置。
2016年5月更新
@TamasHegedus在他的评论中指出,grunt-contrib-watch
似乎不再存在问题。