【问题标题】:Are there any drawbacks to using load-grunt-tasks?使用 load-grunt-tasks 有什么缺点吗?
【发布时间】:2014-10-04 09:52:21
【问题描述】:

我最近遇到了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 也不是很熟悉,因此我将不胜感激。

【问题讨论】:

    标签: node.js automation gruntjs npm


    【解决方案1】:

    据我所知,基本上只有一个缺点可能超过优点:性能。如果您使用 watch,则每次触发更改时模块都会加载组件。我有较大的项目,其中速度下降显着。你可以通过使用jit-grunt 来规避这个问题,另一方面,它与每个 grunt 模块(例如 spritesmith)不兼容。

    也许不那么重要的是单次加载模块的速度降低。 load-grunt-tasks 先索引你的任务配置,然后才能加载模块。

    2016 年 5 月更新

    正如@TamasHegedus 在他的评论中指出的那样,这似乎不再是grunt-contrib-watch 的问题。

    【讨论】:

    • 你不是在谈论 grunt-contrib-watch,是吗?如果我错了,请纠正我,但我认为 grunt-contrib-watch 模块不需要加载模块,因为它不会启动新进程来运行任务
    • @TamasHegedus 这个问题很老了,确实指的是 grunt-contrib-watch,但它的旧版本。那时候有上面描述的问题,但我不确定是否仍然是这种情况。
    • 哇,抱歉,我没有注意到这个胎面这么旧。出于某种原因,它出现在有趣的选项卡中。没关系。
    • 感谢@hugo-der-hungrige,我一直在愉快地使用 jit-grunt,如果你告诉它相应的可执行文件,它实际上确实可以与 spritesmith 一起工作:require('jit-grunt')(grunt, {sprite: 'grunt-spritesmith'})(有usemin 也有同样的问题)
    猜你喜欢
    • 2015-04-07
    • 1970-01-01
    • 2010-09-27
    • 2011-04-26
    • 2011-02-28
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    相关资源
    最近更新 更多