为你的单仓库打造一个TypeScript命令行工具
我喜欢为我的Monorepo创建一些本地CLI,用来自动化像build
和deploy
这样的任务。这些任务往往需要做更多的事情,而不仅仅是简单地将几个命令串联起来(如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('用于 Monorepo 的 CLI')
.version('1.0.0');
program
.command('build')
.description('构建 Monorepo')
.action(async () => {
console.log('构建中...');
// 执行相应的构建步骤 ...
});
program
.command('deploy')
.description('部署 Monorepo')
.action(async () => {
console.log('部署中...');
// 执行相应的部署步骤 ...
});
await program.parseAsync(process.argv);
切换到全屏/退出全屏
将此脚本保存为 cli
(或您喜欢的任何名称)在您的项目根目录下,并使用 chmod +x cli
使其可执行。然后,您可以通过 ./cli
直接运行它,只需运行 ./cli
即可:
$ ./cli
用法:monorepo [选项] [命令]
Monorepo 的命令行界面 (CLI)
选项:
-V, --version 输出版本号
-h, --help 显示帮助信息
命令:
build 构建
deploy 部署
help [命令] 显示指定命令的帮助
点击全屏 点击退出全屏
让这段代码能在不使用 node
、npx
甚至 .ts
文件扩展名的情况下运行的魔法就在第一行——shebang
#!/usr/bin/env -S pnpm tsx
注:此行代码指定了使用特定环境来运行TypeScript脚本。
点击全屏,退出全屏
这个shebang告诉你的shell应该用哪个程序来执行这个文件。这个shebang告诉你的shell,它在幕后将你的./cli
命令转换成pnpm tsx cli
。这也可以和其他包管理器一起使用——你可以用npm
或yarn
替换pnpm
。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦