【问题标题】:Grunt run task for another Grunt file另一个 Grunt 文件的 Grunt 运行任务
【发布时间】:2015-12-04 20:28:34
【问题描述】:

我在 3 个不同的文件夹中有 3 个独立的应用程序。例如文件夹 1、文件夹 2 和文件夹 3。 folder3 是 folder1 和 folder2 的组合。现在,我在文件夹 1 和文件夹 2 上运行 dist 任务,然后通过 bower 链接将这些 dist 文件夹与文件夹 3 链接。有什么方法可以在文件夹 3 中运行一个任务,在文件夹 1 和文件夹 2 上创建 dist,并将它们与文件夹 3 链接?简而言之,我想从 folder3 运行 folder1 和 folder2 的 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    

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

【问题讨论】:

  • 这不是很清楚。请添加相关代码
  • 简而言之,我想为其他项目运行 dist 任务,并将其作为凉亭组件包含在我的项目中。想法是,如果我有多个项目作为凉亭组件包含在我的项目中,而不是去单个项目,运行 dist 然后将它们包含在我的项目中,我希望如果我在我的主项目上运行 dist 然后该任务应该运行dist 在我给定的项目列表上并链接它们。
  • “链接他们”是什么意思?你想创建一个 grunt 任务来运行其他项目的 grunt 任务对吗?
  • 正确。现在,这是我的第一步。

标签: gruntjs


【解决方案1】:

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

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

例如:

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');
};

现在您只需创建一个注册任务来运行这两个任务和您的其他任务。

例如:

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

然后从文件夹 3 运行 grunt distAndLink。

【讨论】:

  • 我试过了。但它在同一个 GruntFile 上运行 dist 任务,而我希望它在我的 folder1 上运行 dist。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 2015-11-01
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
相关资源
最近更新 更多