Je voulais découvrir comment fonctionne la CLI shadcn-ui. Dans cet article, je discute du code utilisé pour créer la CLI shadcn-ui/ui.
Dans la partie 2.11, nous avons examiné la fonction runInit et comment shadcn-ui/ui garantit que les répertoires fournis dans les chemins résolus dans la configuration existent.
Les opérations suivantes sont effectuées dans la fonction runInit :
1, 2, 3, 4 de ce qui précède sont traités dans les parties 2.12, 2.13 et 2.14, découvrons comment se déroule l'opération « Installer les dépendances ».
L'extrait de code ci-dessous est extrait de cli/src/commands/init.ts
// Install dependencies. const dependenciesSpinner = ora(\`Installing dependencies...\`)?.start() const packageManager = await getPackageManager(cwd) // TODO: add support for other icon libraries. const deps = \[ ...PROJECT\_DEPENDENCIES, config.style === "new-york" ? "@radix-ui/react-icons" : "lucide-react", \] await execa( packageManager, \[packageManager === "npm" ? "install" : "add", ...deps\], { cwd, } ) dependenciesSpinner?.succeed()
ora est un élégant spinner de terminal et est utilisé pour afficher le message « Installation des dépendances… » lorsque vous exécutez la commande npx shadcn init.
getPackageManager est importé packages/cli/src/utils/get-package-manager.ts
import { detect } from "@antfu/ni" export async function getPackageManager( targetDir: string ): Promise<"yarn" | "pnpm" | "bun" | "npm"> { const packageManager = await detect({ programmatic: true, cwd: targetDir }) if (packageManager === "yarn@berry") return "yarn" if (packageManager === "pnpm@6") return "pnpm" if (packageManager === "bun") return "bun" return packageManager ?? "npm" }
Avez-vous déjà utilisé npm dans un projet pnpm ? Je l'ai fait et souvent, l'installation du package ne parvient pas car vous utilisez npm dans un projet pnpm.
@antfu/ni vous permet d'utiliser le bon gestionnaire de packages et de détecter est une fonction qui donne le packageManager utilisé dans un projet donné basé sur cwd.
Je ne trouve rien de mentionné sur la méthode de détection dans le fichier readme de @antfu/ni Github. Comment sauriez-vous qu’une telle méthode existe à moins de la lire dans une base de code open source ?
Execa exécute des commandes dans votre script, application ou bibliothèque. Contrairement aux shells, il est optimisé pour une utilisation programmatique. Construit sur le module principal child_process. Ceci est construit par la légende Sindre Sorhus
shadcn-ui/ui CLI utilise execa pour installer les dépendances nécessaires dans le cadre de la commande npx shadcn-ui init.
shadcn-ui CLI utilise execa, construit par la légende Sindre Sorhu. Execa est utilisé pour installer les dépendances nécessaires dans un fichier script. Nous sommes tous familiers avec l'exécution de commandes d'installation, mais si vous souhaitez installer certains packages dans un script par programme, execa peut être utilisé.
shadcn-ui CLI détecte le gestionnaire de packages utilisé dans votre projet à l'aide de la méthode « détecter » de @antfu/ni.
Cet article marque ma quête pour étudier et apprendre ce qui se passe sous le capot lorsque vous exécutez la commande npx shadcn-ui init comme terminée.
Je passe à l'étude de la commande add.
Vous voulez apprendre à créer shadcn-ui/ui à partir de zéro ? Découvrez construire à partir de zéro
Site Internet : https://ramunarasinga.com/
Linkedin : https://www.linkedin.com/in/ramu-narasinga-189361128/
Github : https://github.com/Ramu-Narasinga
Email : ramu.narasinga@gmail.com
Construisez shadcn-ui/ui à partir de zéro
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!