Make it easier to share field definitions
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 42/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- typescript
- Domaine
- developer-experience
Piste de recherche
Commencez par l’API defineDocumentType et localisez dans Contentlayer les définitions de types ou les exports de FieldDef et ReferencePolymorphicFieldDef. Vérifiez comment sharedFields.title et sharedFields.url sont inférés, puis déterminez si les définitions de champs réutilisables peuvent passer le type-check et quelle approche userland recommandée devrait être documentée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
I'd love to be able to do something like this:
const sharedFields = {
title: (opts) => {
return {
type: "string",
required: true,
...opts
}
},
url: {
type: "string",
resolve: (doc) => doc._raw.flattenedPath,
}
}
export const Tag = defineDocumentType(() => ({
name: "Tag",
filePathPattern: `tags/**/*.md`,
fields: {
title: sharedFields.title,
color: {
type: "string",
description: "Color of the badge to show for the tag",
},
},
computedFields: {
url: sharedFields.url,
},
}));
The types from defineDocumentType are inferred by Contentlayer. But this process doesn't work because the correct types cannot be inferred from sharedFields.
For example, title throws the following:
(property) title: (opts: any) => any
Type '(opts: any) => any' is not assignable to type 'FieldDef'.
Type '(opts: any) => any' is not assignable to type 'ReferencePolymorphicFieldDef'.
Type '(opts: any) => any' is missing the following properties from type '{ type: "reference"; default?: string; of: readonly DocumentType<string>[]; typeField?: string; }': type, of
I'm assuming this is just a matter of bringing in the proper types from Contentlayer. I poked around for a bit, but couldn't find the right import path containing FieldDef and ReferencePolymorphicFieldDef.
I think there are two parts to this:
- Get it to work by importing types from Contentlayer.
- Considering these types to be userland code, let's find a cleaner recommended implementation approach for devs.
- Langage dominant
- TypeScript
- Étoiles
- 3.5k
- Forks
- 192
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de contentlayerdev/contentlayer
-
Difficulté 3/5 1-2 jours Accessibilité débutants 25/100
contentlayerdev/contentlayer#506 · 84 commentaires · 47 réactions ·
-
Poor/broken monorepo DX: can't specify .contentlayer/ output path, no docs for custom config path Ouvertehelp wanted meta: never-stale needs-research
Difficulté 4/5 3-5 jours Accessibilité débutants 38/100
contentlayerdev/contentlayer#464 · 4 commentaires · 9 réactions ·
-
State of the project Ouvertemeta: never-stale
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 10/100
contentlayerdev/contentlayer#429 · 49 commentaires · 83 réactions ·
-
meta: never-stale topic: markdown/mdx
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
contentlayerdev/contentlayer#421 · 4 réactions ·
-
meta: never-stale needs-research topic: schema
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
contentlayerdev/contentlayer#420 ·
Toutes les issues de contentlayerdev/contentlayer
Issues similaires
-
blocklist removal
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
MetaMask/eth-phishing-detect#296544 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
pastelsky/bundlephobia#1122 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
category/development priority/P2 scope/file-operations scope/testing type/enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Enatega Customer and Rider app: Add-ons price is not visible to customer after order is placed. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100