contentlayerdev / contentlayerdev/contentlayer

Add support for named scopes ("computed collection")

Aberta
#71 1 comentário 6 reações 0 responsáveis Ver no GitHub
feature
Linguagem predominante
TypeScript
Estrelas
3.5k
Forks
192
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

Defining a document type brings the entirety of content for that document into the data object that we import into pages. I'm potentially importing much more information than I need to work with. It also forces me to write filtering logic in the template. And while this is a fairly typical pattern with Next.js, it's not a pleasant developer experience.

Proposal is to allow for named scopes when defining a document type. Something like this:

```js
const Doc = defineDocumentType(() => ({
name: "Doc",
// ...
fields: { /* ... */ },
scopes: [
{
name: "mostRecent",
resolve: (docs) => /* sorting/filtering logic ... */
}
]
))
```

I don't have a strong opinion on how this would then be used, but maybe something like this:

```js
import { allDocs, mostRecentDocs } from ".contentlayer/data"
```

The key decision here is finding a balance between being too magical (appending "Docs" to the scope name) and having to validate that scopes across all types be unique.

(Inpsired from a conversation with @smnh.)

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Comece rastreando defineDocumentType e os exports gerados de .contentlayer/data. Revise como os campos dos documentos atualmente se tornam dados de página e, em seguida, determine o comportamento de nomenclatura e exclusividade dos scopes antes da implementação. Considera-se concluído quando scopes nomeados puderem definir ordenação ou filtragem e forem expostos por meio de um padrão de importação documentado.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
next.js, typescript
Domínio
data, developer-experience, tooling
Tipo de issue
Funcionalidade
Dificuldade
5/5
Tempo estimado
Mais de uma semana
Status de atividade
Estagnada
Clareza
Precisa de esclarecimento
Facilidade para iniciantes
30/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.