Grunt为另一个Grunt文件运行任务

时间:2015-12-04 20:28:34

标签: gruntjs

我在3个不同的文件夹中有3个独立的应用程序。例如folder1,folder2和folder3。 folder3是folder1和folder2的组合。现在,我在folder1和folder2上运行dist任务,然后使用bower链接我将那些dist文件夹链接到folder3。有没有办法在folder3中运行任务,在folder1和folder2上创建dist,并将它们与folder3链接?总之,我想从folder3运行文件夹1和文件夹2的grunt任务并链接它们。

grunt.config.set('exec', {
    loginapp: {
       command: 'grunt -b C:/project/loginapp dist'
    }
});

grunt.registerTask('all', [
   'exec:loginapp'
]);

文件夹结构

c:\project
    ----loginapp
       dist
       GruntFile.js
    ----webapp
        public
            bower_components
                dist-loginapp
        GruntFile.js    

希望这会有所帮助。我在webapp>我运行dist的GruntFile应该在loginapp上执行dist任务,然后才能执行dist任务。

1 个答案:

答案 0 :(得分:0)

您可以使用-b标志来指定存在Gruntfile的备用基本路径。

然后使用grunt-exec创建运行其他项目的grunt任务的任务。

E.g

module.exports = function(grunt) {
    grunt.config.set('exec', {
        distFolder1: {
            command: 'grunt -b relative/path/to/Gruntfile/of/folder1 taskName'
        },
        distFolder2: {
            command: 'grunt -b relative/path/to/Gruntfile/of/folder2 taskName'
        },
    });

    grunt.loadNpmTasks('grunt-exec');
};

现在您只需创建一个运行这两项任务的注册任务,然后执行其他任务。

E.g

module.exports = function(grunt) {
    grunt.registerTask('distAndLink', [
        'exec:distfolder1',
        'exec:distfolder2',
        // your other task (bower link)
    ]);
};

然后从文件夹3运行grunt distAndLink