Grunt汇编:多个分布

时间:2014-06-23 16:32:34

标签: gruntjs assemble

我们正在开发一个需要一些共享布局和一些自定义布局的汇编项目。

最初我们有一个默认页面的目的地。现在我们打破了这一点,以便每个品牌/网站都有自己的分发文件夹。

我的问题是 - 在我们把所有东西都正确组装完毕之前。现在我们有多个发行版,事情变得有些混乱:)

当前设置:

模板

  |-- templates
  |  |-- _default
  |  |  |--includes
  |  |  |--layouts
  |  |  |--pages
  |  |-- brand 1
  |  |  |--includes
  |  |  |--layouts
  |  |  |--pages
  |  |-- brand 2
  |  |  |--includes
  |  |  |--layouts
  |  |  |--pages

我们的组装任务:

    assemble: {
        options: {
        flatten: true,
        production: false,
        postprocess: require('pretty'),

    // Metadata
    pkg: '<%= pkg %>',
    site: '<%= site %>',

    // Templates
    // partials: '<%= site.includes %>',
    // layoutdir: '<%= site.layouts %>',
    // layout: '<%= site.layout %>'
  },
    brand1: {
      files: {'<%= site.justin %>/': ['<%= site.templates %>/justin/**/*.hbs']}
    },
    brand2: {
      files: {'<%= site.jow %>/': ['<%= site.templates %>/jow/**/*.hbs']}
    },
    tonylama: {
      files: {'<%= site.tonylama %>/': ['<%= site.templates %>/tonylama/**/*.hbs']}
    },
    brand3: {
      files: {'<%= site.nocona %>/': ['<%= site.templates %>/nocona/**/*.hbs']}
    },
    brand4: {
      files: {'<%= site.chippewa %>/': ['<%= site.templates %>/chippewa/**/*.hbs']}
    }
}

所以问题就变成了 - 我们如何成功组装到多个发行版?您可以放置​​options并指向各自的布局并包括?

当我运行grunt assemble:brandname时出现错误Warning: Layout file (forgot-password.hbs) not found

2 个答案:

答案 0 :(得分:1)

导致错误的显而易见的事情是您的布局被注释掉了。除此之外,您应该能够做到:

assemble: {
  options: {
    flatten: true,
    production: false,
    postprocess: require('pretty'),

    // Metadata
    pkg: '<%= pkg %>',
    site: '<%= site %>',

    // Templates
    partials: '<%= site.includes %>',
    layoutdir: '<%= site.layouts %>',
    layout: '<%= site.layout %>'
  },
  justin: {
    options: {layout: 'justin/layout.hbs'},
    files: {
      '<%= site.justin %>/': ['<%= site.templates %>/justin/**/*.hbs']
    }
  },
  jow: {
    options: {layout: 'jow/layout.hbs'},
    files: {
      '<%= site.jow %>/': ['<%= site.templates %>/jow/**/*.hbs']
    }
  },
  tonylama: {
    options: {layout: 'tonylama/layout.hbs'},
    files: {
      '<%= site.tonylama %>/': ['<%= site.templates %>/tonylama/**/*.hbs']
    }
  },
  nocona: {
    options: {layout: 'nocona/layout.hbs'},
    files: {
      '<%= site.nocona %>/': ['<%= site.templates %>/nocona/**/*.hbs']
    }
  },
  chippewa: {
    options: {layout: 'chippewa/layout.hbs'},
    files: {
      '<%= site.chippewa %>/': ['<%= site.templates %>/chippewa/**/*.hbs']
    }
  }
}

那就是说,随着你的扩展,它将变得更加难以管理 - 正如你所期望的那样。另一个选择是创建一个插件,为每个品牌自动生成“目标”(http://gruntjs.com/configuring-tasks#task-configuration-and-targets)。

答案 1 :(得分:0)

使用目标中的选项,我能够修复错误并推送到多个dist文件夹。

assemble: {
  options: {
    flatten: true,
    production: false,
    postprocess: require('pretty'),

    // Metadata
    pkg: '<%= pkg %>',
    site: '<%= site %>',
  },
    brand: {
      options: {
        //Template Config
        partials: '<%= site.brandIncl %>',
        layoutdir: '<%= site.brandLayouts %>',
        layout: '<%= site.brandLayout %>'
      },
      files: {'<%= site.brand %>/': ['<%= site.templates %>/brand/pages/*.hbs']}
    }