Maison >interface Web >js tutoriel >Création d'une CLI TypeScript pour votre Monorepo

Création d'une CLI TypeScript pour votre Monorepo

DDD
DDDoriginal
2024-12-10 07:48:10824parcourir

Creating a TypeScript CLI for Your Monorepo

J'aime créer des CLI locales pour mon Monorepo afin d'automatiser des tâches telles que la construction et le déploiement. Ces tâches nécessitent souvent plus que simplement enchaîner quelques commandes dans un script npm (comme rimraf dist && tsc).

En utilisant commander.js et tsx, nous pouvons créer des programmes exécutables écrits en TypeScript qui s'exécutent à partir de la ligne de commande comme n'importe quel autre outil CLI.

#!/usr/bin/env -S pnpm tsx
import { Command } from 'commander';

const program = new Command()
  .name('monorepo')
  .description('CLI for Monorepo')
  .version('1.0.0');

program
  .command('build')
  .description('Build the monorepo')
  .action(async () => {
    console.log('Building...');
    // run your build steps ...
  });

program
  .command('deploy')
  .description('Deploy the monorepo')
  .action(async () => {
    console.log('Deploying...');
    // run your deploy steps ...
  });

await program.parseAsync(process.argv);

Enregistrez ce script sous cli (ou tout autre nom de votre choix) à la racine de votre projet et rendez-le exécutable avec chmod x cli. Vous pouvez ensuite l'exécuter directement en utilisant ./cli :

$ ./cli
Usage: monorepo [options] [command]

CLI for Monorepo

Options:
  -V, --version   output the version number
  -h, --help      display help for command

Commands:
  build           Build the monorepo
  deploy          Deploy the monorepo
  help [command]  display help for command

La magie qui vous permet d'exécuter ceci sans nœud, npx ou même extension .ts est dans la première ligne - le shebang :

#!/usr/bin/env -S pnpm tsx

Ce shebang indique à votre shell quel programme doit exécuter ce fichier. En coulisses, il traduit votre commande ./cli en pnpm tsx cli. Cela fonctionne également avec d'autres gestionnaires de packages - vous pouvez utiliser npm ou fil au lieu de pnpm.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn