zoukankan      html  css  js  c++  java
  • [CLI] Create a Hybrid Single-Multi Command Node.js CLI with Oclif and TypeScript

    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
  • 相关阅读:
    转:神经网络入门
    转:Webkit Flex伸缩盒模型属性备忘
    css3 display:-webkit-box
    display:inline和display:block及html常用标签
    display
    weui flex 分布
    图片、字体、iconfont矢量图
    flex weui列表demo
    方法调用
    C#多线程之Task
  • 原文地址:https://www.cnblogs.com/Answer1215/p/12391888.html
Copyright © 2011-2022 走看看