我喜歡為 Monorepo 建立本地 CLI,以自動執行建置和部署等任務。這些任務通常需要的不僅僅是在 npm 腳本中連結幾個命令(例如 rimraf dist && tsc)。
使用 Commander.js 和 tsx,我們可以建立用 TypeScript 編寫的可執行程序,這些程序像任何其他 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);
將此腳本儲存為專案根目錄中的 cli (或任何您喜歡的名稱),並使用 chmod x cli 使其可執行。然後您可以使用 ./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
允許您在沒有節點、npx 甚至 .ts 擴展名的情況下運行它的魔力就在第一行 - shebang:
#!/usr/bin/env -S pnpm tsx
這個 shebang 告訴你的 shell 哪個程式應該要執行這個檔案。在幕後,它將您的 ./cli 命令轉換為 pnpm tsx cli。這也適用於其他套件管理器 - 您可以使用 npm 或yarn 來代替 pnpm。
以上是為您的 Monorepo 建立 TypeScript CLI的詳細內容。更多資訊請關注PHP中文網其他相關文章!