为了账号安全,请及时绑定邮箱和手机立即绑定

为你的单仓库打造一个TypeScript命令行工具

我喜欢为我的Monorepo创建一些本地CLI,用来自动化像builddeploy这样的任务。这些任务往往需要做更多的事情,而不仅仅是简单地将几个命令串联起来(如rimraf dist && tsc)。

通过使用commander.jstsx,我们可以创建用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 [命令]     显示指定命令的帮助

点击全屏 点击退出全屏

让这段代码能在不使用 nodenpx 甚至 .ts 文件扩展名的情况下运行的魔法就在第一行——shebang

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

注:此行代码指定了使用特定环境来运行TypeScript脚本。

点击全屏,退出全屏

这个shebang告诉你的shell应该用哪个程序来执行这个文件。这个shebang告诉你的shell,它在幕后将你的./cli命令转换成pnpm tsx cli。这也可以和其他包管理器一起使用——你可以用npmyarn替换pnpm

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消