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

Javascript 如何在grunt插件中运行其他注册的grunt任务?,javascript,node.js,gruntjs,Javascript,Node.js,Gruntjs,我正在编写一个grunt插件,它将有助于我经常使用的构建过程。我通常会在一个项目与另一个项目之间复制/粘贴我的GruntFile,但我认为把它放到插件中可能会更有用。我在这个构建过程中使用的任务通常是繁重的任务,比如jshint,copy,cssmin,less,以及uglify。我想如果我能创建一个插件,只需进行一些配置并运行所有这些任务,我就可以清理我的Gruntfile.js文件 我当前的设置通常如下所示: grunt.initConfig({ jshint: {/* ... */},

我正在编写一个grunt插件,它将有助于我经常使用的构建过程。我通常会在一个项目与另一个项目之间复制/粘贴我的GruntFile,但我认为把它放到插件中可能会更有用。我在这个构建过程中使用的任务通常是繁重的任务,比如
jshint
copy
cssmin
less
,以及
uglify
。我想如果我能创建一个插件,只需进行一些配置并运行所有这些任务,我就可以清理我的
Gruntfile.js
文件

我当前的设置通常如下所示:

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

  // Load and Register tasks...
grunt.initConfig({
  build: {
    dev: {
      paths: {
        public: 'public',
        source: 'source',
        bower: 'bower_components'
      },
      options: {
        pretty: true,
        minify: false
      }
    }
  }
});
但我想将initConfig简化为如下内容:

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

  // Load and Register tasks...
grunt.initConfig({
  build: {
    dev: {
      paths: {
        public: 'public',
        source: 'source',
        bower: 'bower_components'
      },
      options: {
        pretty: true,
        minify: false
      }
    }
  }
});
这是可以在grunt插件中完成的吗

编辑: 我发现了一些类似于我所寻找的东西,但它似乎没有那么优雅,特别是对于我需要手动设置的所有配置,但也许它是值得的


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

最后,我创建了一个包装我的解决方案的npm模块,您可能想看看: