你可以使用多个gruntfiles并产生新的grunt任务吗?

时间:2014-07-29 18:41:05

标签: node.js gruntjs

我是使用grunt的初学者,所以我所说的一些内容可能根本就没有意义。

我正在运行一个管理多个项目的繁琐工作,所以拥有一个单独的gruntfile.js是700多行任务配置的压倒性优势。 (更不用说目录路径)

我想知道,是否可以在每个app目录中都有一个单独的gruntfile.js。

其次,如果可以在根目录下用编码创建一个gruntfile.js

grunt.registerTask('build_app1', '', function(){
   // cd app1, run command: grunt build
})

如果这是不可能的,你不认为这可能是目标/未来开发者努力争取的目标吗?

反馈

1 个答案:

答案 0 :(得分:0)

关于你的第一个问题:

是的,你可以做到。默认情况下," grunt在当前或父目录中查找最近的Gruntfile.js或Gruntfile.coffee文件"。

关于你的第二个问题:

我正在尝试使用Grunt找到类似的项目解决方案。但是,您可以使用此grunt插件:https://www.npmjs.com/package/grunt-shell

还有另一个:https://www.npmjs.com/package/grunt-exec

你也可以使用" grunt.util.spawn"。请参阅Grunt官方网站。

使用它来执行某些任务shell很容易。

基于您想要做的事情的示例:

 grunt.registerTask('build_app1', '', function(numApp) {
     if('1' == numApp) {
       grunt.task.run(['shell:moveToApp1']);
     }
     else if (...) { //2, 3, 4, ...
     }
     grunt.task.run(['shell:buildApp']);
 });

 grunt.initConfig({
    shell: {
        moveToApp1 :{
            options: {
                stderr:true
            },
            command: function() {
                return 'cd app1';
        buildApp: {
            options: {
                stderr: true
            },
            command: function() {
                return 'grunt build';
            } 
        }
});

我认为有一个更好的解决方案来动态更改目录。我相信你会找到解决方案。