2

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

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

我的问题是——在我们把事情搞砸之前,一切都组装好了。现在我们有多个发行版,事情变得有点混乱:)

当前设置:

模板

  |-- 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

4

2 回答 2

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 )。

于 2014-06-23T17:21:04.323 回答
0

Using the options inside the target, I was able to fix my errors and push to multiple dist folders.

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']}
    }
于 2014-06-23T18:04:29.597 回答