【问题标题】:Using a grunt plugin's Gruntfile task rather than one from the executing Gruntfile使用 grunt 插件的 Gruntfile 任务,而不是来自正在执行的 Gruntfile 任务
【发布时间】:2014-02-17 18:24:46
【问题描述】:

我有一个 grunt 插件,我们称之为 grunt-my-plugin,在插件的 Gruntfile 中我有一个特定的 cssmin 任务需要运行。测试 grunt 插件时一切正常,但是,当我将它安装到另一个项目时,它给了我以下错误:

Warning: Task "cssmin" not found. Use --force to continue.

一开始我只是从插件的任务文件中调用grunt.task.run('cssmin');,但是看到错误后我意识到使用这个插件的Gruntfile需要指向适当的任务配置,所以我补充说:

grunt.task.loadTasks('./Gruntfile.js');

这仍然是我的错误,所以我尝试了:

grunt.task.loadTasks('./node_modules/grunt-my-plugin/Gruntfile.js');

仍然收到错误消息。那么,我该如何解决这个问题?该插件不需要来自使用它的 Gruntfile 的特定配置。 cssmin 任务用于创建 tmp 副本并针对它运行指标。关于如何实现这一目标的任何想法?谢谢!

【问题讨论】:

    标签: gruntjs


    【解决方案1】:

    确保以下几点:

    • 您的插件在package.json 中将grunt-contrib-cssmin 插件列为依赖项
    • 您在另一个项目中有npm install-ed(与npm ls grunt-contrib-cssmin 核对)
    • 在调用grunt.task.run('cssmin')之前使用grunt.config()cssmin任务提供配置(见this GitHub comment的想法)

    【讨论】:

    • 这似乎是一种复杂的实现方式。有没有办法在外部存储配置并指向它?
    • 我不确定grunt.task.loadTasks() 是否是您所需要的。也许您可以将配置放在cssmin-config.json 文件中,然后grunt.file.readJSON() 它,遍历它返回的对象并将每个元素传递给grunt.config()。只是在黑暗中拍摄。
    • 欣赏它。您引用的 github 链接使用的是 Grunt 0.3,所以我想知道在 0.4 中是否有更好的方法来完成此操作?
    • 我不知道。但是你可能会问在#grunt on irc.freenode.net 中使用 IRC。如果您找到更好的方法,请在此处分享想法:)
    • 经过更多挖掘,似乎grunt-contrib-cssmin 没有安装在另一个项目中,即使我将它列为插件中的依赖项。有没有办法指向插件的依赖,或者插件安装到其他项目时自动添加(--save-dev)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    相关资源
    最近更新 更多