Я создаю статический сайт, используя JavaScript API Metalsmith и 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.info('All done!')
})
Нет файлов для dogs
; это просто массив, который я создал сам. Как указать metalsmith-collections
создать коллекцию из массива?
🤔 А знаете ли вы, что...
JavaScript можно использовать для манипуляции DOM (Document Object Model), что позволяет изменять содержимое и структуру веб-страницы.
Я раньше не использовал metalsmith-collections
, но глядя на документы здесь, похоже, что этот инструмент используется для сбора коллекций файлов, а не для получения массива данных, как вы пытаетесь сделать здесь.
Объект параметров, который вы передаете collections()
, должен иметь ключ для каждой коллекции, которую вы хотите (например, dogs
), и каждый из этих ключей должен быть объектом с нужными вам параметрами: коллекция (похоже, это может быть единственный обязательный параметр — остальные кажутся необязательными), pattern
, которая представляет собой строку, по которой вы можете сортировать эти файлы, которая, кажется, извлекается из их метаданных, sortBy
, которая является логическим значением, которое вы можете использовать для инвертировать сортировку вместе с reverse
, metadata
, limit
и некоторыми другими, упомянутыми в этих документах.
Чтобы применить это к вашему варианту использования, я могу предложить создать каталог refer
в том же месте, что и файл конфигурации, которым вы поделились здесь, а затем поместить, скажем, dogs/
, rover.md
и dog.md
в каталог daisy.md
. Тогда вы должны быть в таблице, чтобы сделать что-то вроде этого:
// ...
.use(collections({
dogs: {
pattern: 'dogs/*.md'
}
}))
Тогда эти файлы Markdown (dogs/
) в каталоге *.md
должны присутствовать в вашей коллекции dogs/
.