2016-01-11 32 views
1

我的团队目前在多个项目上工作,这些项​​目都有自己的gruntfile.js文件。但他们都是一样的,复制粘贴在每个新项目上......哪一个都不好!如何在多个项目之间共享gruntfile.js文件或grunt任务?

我正在寻找一种方法来维护只有一个gruntfile.js并共享所有项目之间的最新版本。我看到这样的方法有两种:部署共享gruntfile.js通过我们的内部网络和访问了一些路径...

  • ...在每次调用使用grunt --gruntfile = /path/to/share/gruntfile.js taskName到咕噜任务的任何项目目录内。 Jenkins构建可以使共享文件保持最新,并在提交时重新部署它。通过这种方式,一个项目不再有自己的gruntfile.js文件。

  • ...正确gruntfile.js每个项目的里面,找到一个方法来告诉咕噜进口一切(任务,configInit等)共享gruntfile.js声明。就像使用Maven pom.xml文件来完成父级pom一样。

有没有人看到一个或两个解决方案不工作的原因?

有没有人知道一个简单的方法来做到这一点,也许使用现有的工具或插件?

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

+0

为什么不有一个grunt文件,并有建设任务参数,参数是什么目录建立?然后检查它的来源,你很好。 –

+0

我可能会采用第二种方法,它似乎是最具扩展性和可移植性的想法。 –

+0

@still_learning:这也是我更喜欢的解决方案。但这是我不知道该怎么做的。 :( – Eria

回答

1

最后,我找到了一种在多个项目上共享任务声明的方法:我创建了一个自定义的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 

我发布了我的插件,并添加它作为devDependency我所有的项目。

最后,我的所有项目的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); 

}; 

这一切!可能不是最好的解决方案。但是这个工作。

下一步是将项目的package.json中的依赖项列表传递给自定义插件的package.json,并使用'npm install'递归地安装所有依赖项。但似乎npm无法加载和安装依赖关系的依赖关系...

相关问题