Gruntjs 如何在多个项目之间共享gruntfile.js文件或grunt任务?

Gruntjs 如何在多个项目之间共享gruntfile.js文件或grunt任务?,gruntjs,Gruntjs,我的团队目前正在处理多个项目,这些项目都有自己的gruntfile.js文件。但它们都差不多,复制粘贴在每个新项目上。。。这一点都不好 我正在寻找一种只维护一个gruntfile.js并在所有项目之间共享最新版本的方法。我看到了两种方法:将共享的gruntfile.js部署到可以通过内部网络访问的路径上,然后 。。。在任何项目目录中对grunt任务的每次调用中使用grunt--Gruntile=/path/to/share/gruntile.js taskName。Jenkins构建可以使共享

我的团队目前正在处理多个项目,这些项目都有自己的gruntfile.js文件。但它们都差不多,复制粘贴在每个新项目上。。。这一点都不好

我正在寻找一种只维护一个gruntfile.js并在所有项目之间共享最新版本的方法。我看到了两种方法:将共享的gruntfile.js部署到可以通过内部网络访问的路径上,然后

  • 。。。在任何项目目录中对grunt任务的每次调用中使用
    grunt--Gruntile=/path/to/share/gruntile.js taskName
    。Jenkins构建可以使共享文件保持最新,并在提交时重新部署它。这样,项目就不再有自己的gruntfile.js文件了

  • 。。。在每个项目的正确gruntfile.js中,找到一种方法告诉grunt导入共享gruntfile.js中声明的所有内容(任务、configInit等)。就像使用具有父pom的Maven pom.xml文件一样

有人看到一个或两个解决方案不起作用的原因吗

有人知道一种简单的方法吗,也许是使用现有的工具或插件


编辑:我们使用的是SVN,而不是GIT。

最后,我找到了一种在多个项目上共享任务声明的方法:我创建了一个自定义grunt插件。此插件包含:

custom-grunt-plugin
|_ config
    |_ config.js : contains all the tasks configurations
|_ tasks
    |_ custom-grunt.js : contains all the tasks declarations
|_ package.json : package info
|_ README.md : package documentation
我发布了我的插件,并将其添加为我所有项目的附件

最后,我所有项目的grunfile.js:

module.exports = function (grunt) {

  // Load custom tasks
  grunt.loadNpmTasks('custom-grunt-plugin');

  // Load grunt tasks automatically
  require('load-grunt-tasks')( grunt );

  // Load configuration from the custom grunt plugin
  var config = require('custom-grunt-plugin/config/config');

  // Add project specific variables to the config
  config.pkg = grunt.file.readJSON('package.json');
  config.paths = {
    app: 'app',
    dist: 'dist/<%= pkg.name %>/<%= pkg.version %>'
  };      

  grunt.initConfig( config );

};
module.exports=函数(grunt){
//加载自定义任务
loadNpmTasks('custom-grunt-plugin');
//自动加载grunt任务
要求('load-grunt-tasks')(grunt);
//从自定义grunt插件加载配置
var config=require('custom-grunt-plugin/config/config');
//将特定于项目的变量添加到配置中
config.pkg=grunt.file.readJSON('package.json');
config.path={
应用程序:“应用程序”,
dist:'dist/'
};      
grunt.initConfig(config);
};
就这些!可能不是最好的解决方案。但是这个有效


下一步是将依赖项列表从项目的package.json传输到定制插件的package.json,并使用“npm install”递归安装所有依赖项。但npm似乎无法加载和安装依赖项的依赖项…

为什么不使用一个grunt文件,让构建任务接受一个参数,该参数是要构建的目录?然后把它检查到源代码中,你就可以了。我可能会选择第二种方法,它似乎是最具扩展性和可移植性的想法。@still\u learning:这也是我更喜欢的解决方案。但我不知道该怎么做(