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

4
我正在编写一个Grunt插件,用于帮助我经常使用的构建过程。通常情况下,我会将我的GruntFile从一个项目复制/粘贴到另一个项目中,但我认为将其放入插件中可能更有用。我用于此构建过程的任务通常是像jshint、copy、cssmin、less和uglify等grunt任务。如果我可以创建一个只需输入一些配置并运行所有这些任务的插件,我认为我可以大大简化我的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插件内部完成吗?

编辑: 我找到了类似于我寻找的东西,但看起来并不是很优雅,特别是所有需要手动设置的配置,但也许值得尝试。

如何在grunt任务中运行另一个grunt任务?

1个回答

4
我能够通过你在第一次编辑后提供的其他问题中提出的解决方案使事情正常运行。问题在于,它仍然缺少任务的加载,因为它们的用例不是来自插件内部。
最终,我创建了一个npm模块来包装我的解决方案,你可能会想要查看:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接