Ich erstelle gerne lokale CLIs für mein Monorepo, um Aufgaben wie Build und Deployment zu automatisieren. Diese Aufgaben erfordern oft mehr als nur die Verkettung einiger Befehle in einem NPM-Skript (wie rimraf dist && tsc).
Mit commander.js und tsx können wir in TypeScript geschriebene ausführbare Programme erstellen, die wie jedes andere CLI-Tool über die Befehlszeile ausgeführt werden.
#!/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);
Speichern Sie dieses Skript als cli (oder einen beliebigen Namen Ihrer Wahl) in Ihrem Projektstamm und machen Sie es mit chmod x cli ausführbar. Sie können es dann direkt mit ./cli:
ausführen
$ ./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
Die Magie, die es Ihnen ermöglicht, dies ohne Node, Npx oder sogar eine .ts-Erweiterung auszuführen, liegt in der ersten Zeile – dem Knaller:
#!/usr/bin/env -S pnpm tsx
Dieser Kram teilt Ihrer Shell mit, welches Programm diese Datei ausführen soll. Hinter den Kulissen übersetzt es Ihren ./cli-Befehl in pnpm tsx cli. Dies funktioniert auch mit anderen Paketmanagern – Sie können npm oder Yarn anstelle von pnpm verwenden.
Das obige ist der detaillierte Inhalt vonErstellen einer TypeScript-CLI für Ihr Monorepo. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!