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!