首页 > Web开发 > 详细

[CLI] Create a Hybrid Single-Multi Command Node.js CLI with Oclif and TypeScript

时间:2020-03-01 22:06:57      阅读:62      评论:0      收藏:0      [点我收藏+]

Sometimes you still want to support the API and quick developer experience of a single command, while still supporting multi commands in your CLI. This is handy when, for example, you want your user to do something useful with just npx mycli.

Here‘s a quick hack that lets you do that, while also deepening your understanding of how your CLI works with TypeScript, Node.js and Oclif under the hood.

 

If we have multi commands, when we run:

yarn mycli

It will just list all the commands we have here:

技术分享图片

 

Now, let‘s say, we want to set ‘init‘ command as default command.

 

What we can do:

// bin/run.js
#!/usr/bin/env node

const fs = require(‘fs‘)
const path = require(‘path‘)
const project = path.join(__dirname, ‘../tsconfig.json‘)
const dev = fs.existsSync(project)

if (dev) {
  require(‘ts-node‘).register({project})
}

const recongnizedCommand = [‘init‘, ‘build‘]
if (process.argv.length > 2 && recongnizedCommand.includes(process.argv[2])) {
  require(`../${dev ? ‘src‘ : ‘lib‘}`).run()
  .catch(require(‘@oclif/errors/handle‘))
} else {
  require(`../${dev ? ‘src‘ : ‘lib‘}/commands/init`).run()
  .catch(require(‘@oclif/errors/handle‘))
}

 

Now, if we just run:

yarn mycli

// the same as

yarn mycli init

 

[CLI] Create a Hybrid Single-Multi Command Node.js CLI with Oclif and TypeScript

原文:https://www.cnblogs.com/Answer1215/p/12391888.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!