contentlayerdev / contentlayerdev/contentlayer

Combine `fields` and `computedFields`

Ouverte
#91 2 commentaires 5 réactions 0 personnes assignées Voir sur GitHub
feature pkg/source-files
Langage dominant
TypeScript
Étoiles
3.5k
Forks
192
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Today we have `fields` and `computedFields`. The definitions in `computedFields` expects a function to which Contentlayer passes the processed document.

I'd rather be able to define all my fields in one place and allow the options of that field definition (presence of `resolve`) to determine whether or not it should be computed. Thus, I could have a doc type def like this:

```js
const Page = defineDocumentType(() => ({
// ...
fields: {
title: { type: 'string', required: true },
url_path: {
type: 'string',
resolve: (doc) => doc._raw.flattenedPath.replace(/pages\/?/, ''),
},
},
}))
```

To do this and still support current use cases, it'd be beneficial to not just pass the processed doc object, but also input data. (See #76 for an example use case.) IOW the shape of the `doc` passed to the `resolve` function might include the following properties:

- `_raw` would still be there as it is today
- `frontmatter` would contain the raw frontmatter content
- `body` (configurable) would contain the processed body

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par examiner les définitions et le traitement actuels de `fields` et `computedFields`, puis lisez le cas d’utilisation référencé dans #76. Ce sera terminé lorsque les définitions de champs pourront utiliser `resolve` pour les valeurs calculées, tout en préservant les cas d’utilisation actuels et en exposant `_raw`, le `frontmatter` brut et des données `body` traitées configurables.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
typescript
Domaine
tooling
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.