如何在grunt插件中运行其他已注册的grunt任务?

时间:2013-12-17 21:58:14

标签: javascript node.js gruntjs

我正在编写一个grunt插件,它将帮助我经常使用的构建过程。我通常最终做的是将GruntFile从一个项目复制/粘贴到项目中,但我认为将它放入一个插件可能会更有用。我用于此构建过程的任务通常是繁琐的任务,例如jshintcopycssminlessuglify等。如果我可以创建一个刚刚接受了一些配置并运行所有这些任务的插件,我想我可以清理我的Gruntfile.js文件。

我目前的设置通常是这样的:

grunt.initConfig({
  jshint: {/* ... */},
  copy: {/* ... */},
  less: {/* ... */},
  cssmin: {/* ... */},
  uglify: {/* ... */}
});

  // Load and Register tasks...

但是我想将initConfig减少到这样:

grunt.initConfig({
  build: {
    dev: {
      paths: {
        public: 'public',
        source: 'source',
        bower: 'bower_components'
      },
      options: {
        pretty: true,
        minify: false
      }
    }
  }
});

这是否可以在grunt插件中完成?

编辑: 我找到了类似于我想要的东西,但它看起来并不那么优雅,尤其是我需要手动设置的所有配置,但也许它是值得的。

How can I run a grunt task from within a grunt task?

1 个答案:

答案 0 :(得分:4)

在第一次编辑后,我能够解决您在其他问题上提出的解决方案。关键是它仍然缺少任务的加载,因为它们的用例不是来自插件内部。

我最终创建了一个包含我的解决方案的npm模块,你可能想看看:

https://www.npmjs.org/package/extend-grunt-plugin