将相关的grunt任务组合在一起

时间:2013-12-11 14:24:12

标签: gruntjs

这可能是常见问题解答,但浏览文档并没有帮助,我放弃了。

我必须运行一个涉及使用其他几个grunt任务的grunt任务。必须以不同方式配置每个任务。像这样:

grunt.initConfig({
  clean : {
      task1 : ["task1"],
      task2 : ["task2"]
  },
  mkdir : {
      task1 : {
          options : {
              create : ["task1"]
          }
      },
      task2 : {
          options : {
              create : ["task2"]
          }
      }
  }
});

...

grunt.registerTask("task1", ["clean:task1", "mkdir:task1"]);
grunt.registerTask("task2", ["clean:task2", "mkdir:task2"]);

我可以通过以下方式完成这项工作:

grunt task1

这很好用,但我不明白为什么“task1”的各个步骤必须分散在配置周围。此外,如果我有很多这样的任务,我的构建文件将变得无法管理。

所以我的问题:

  • 用咕噜的说法,我应该称之为“task1”?这是一项任务吗?我该怎么称呼“mkdir:task1”?是子任务吗?任务配置?

  • 在这种情况下,我该如何组织我的gruntfile?我是否必须为“task1”创建不同的npm项目?这个项目将如何看待(不要犹豫指向为完整的grunt noob编写此类任务的指南,我希望阅读任何超出的内容'这是我观看文件的巨大且无法保证的gruntfile,这不是很好吗? )

由于

2 个答案:

答案 0 :(得分:0)

  用咕噜的说法,我该怎么称呼“task1”?这是一项任务吗?我该怎么称呼“mkdir:task1”?是子任务吗?任务配置?

什么是task1?您是否正在构建HTML视图?你是连续/缩小脚本吗?此类内容的任务名称可能是buildviewscompress。命名任务没有正确或错误的方法,我建议只是描述性的。

  

在这种情况下,我该如何组织我的gruntfile?我是否必须为“task1”创建不同的npm项目?这个项目将如何看待(不要犹豫指向为完整的grunt noob编写此类任务的指南,我希望阅读任何超出的内容'这是我观看文件的巨大且无法保证的gruntfile,这不是很好吗? )

不,你不需要一个不同的npm项目。您似乎正在为您需要做的事情定义不同的配置选项。例如,如果您有rsync任务,那么您可能会像我在此处所做的那样有不同的登台和制作选项:

    rsync: {
        staging: {
            files: 'public/',
            options: {
                host: "mystaginghost.com",
                remoteBase: "/page.com/htdocs",
            }
        },
        styles: {
            files: 'public/stylesheets/',
            options: {
                host: "myproductionhost.com",
                remoteBase: "/production.com/htdocs/public/stylesheets/",
            }
        },
    },

我可以通过从命令行调用grunt rsync:staging或将我的任务设置为包含rsync:staging来单独引用这些任务。

我建议浏览示例Gruntfiles以真正了解如何构建您的。

两个好的是semantic-ui'sone from yeoman backbone generator

答案 1 :(得分:0)

如果您有许多类似的任务序列,那么您可以使用一个函数注册一个任务,该函数接收您发送给它的参数,而不是拥有10个任务,然后您将拥有一个任务。这将要求您的目标遵循通用的命名约定。