1

我正在使用 Metalsmith 的 JavaScript API 和metalsmith-collections. dogs我有一个自定义构建脚本,它组装了一个我想用来创建新集合的数组。

const Metalsmith       = require('metalsmith')
const collections      = require('metalsmith-collections')
const layouts          = require('metalsmith-layouts')

var dogs = [
  { name: 'Rover' },
  { name: 'Dog' },
  { name: 'Daisy' }
]

Metalsmith(__dirname)
  .metadata({})
  .source('./src')
  .destination('./build')
  .clean(true)
  .use(layouts())
  .use(collections({
    dogs: {
      // ?
    }
  })
  .build((error) => {
    if (error) throw error
    console.log('All done!')
  })

没有文件dogs; 它只是我自己创建的一个数组。如何指示metalsmith-collections从数组创建集合?

4

1 回答 1

1

我以前没有用过metalsmith-collections,但是看看这里的文档,看起来这个工具是用来收集文件的,而不是像你在这里尝试做的那样获取一组数据。

您传递给的选项对象collections()应该有一个您想要的每个集合的键(例如dogs),并且每个键都应该是一个具有您想要的选项的对象pattern:似乎这可能是唯一必需的选项 - 其他选项似乎是可选的)sortBy,这是一个字符串,您可以通过它对这些文件进行排序,似乎从它们的元数据中提取reverse,这是一个布尔值,您可以使用它来反转排序,沿着与metadata, limit,refer以及这些文档中提到的其他一些内容。

要将其应用于您的用例,我可能建议dogs/在与您在此处共享的配置文件相同的位置创建一个目录,然后将 , rover.md,dog.mddaisy.md放入dogs/目录中。然后你应该表做这样的事情:

  // ...
  .use(collections({
    dogs: {
      pattern: 'dogs/*.md'
    }
  }))

然后目录中的那些 Markdown ( *.md) 文件dogs/应该存在于您的dogs集合中。

于 2019-03-06T19:24:17.737 回答