关于cli:入门commander

44次阅读

共计 1659 个字符,预计需要花费 5 分钟才能阅读完成。

overview

官网写的 readme 太差了,连一个像样的 demo 都没有。我看了几天 readme 也没学会。起初还是去看源码本人揣摸进去的。是 tj 太 nb 了,让我这个小白的看不懂他的的文章,还是写不分明本人的库能干什么、怎么干。上面是我写的 demo。不便像我这样的小白入门。若你能看懂 tj 写的 readme。关了这个页面吧。

init project

mkdir projectCommand
cd projectCommand
lerna init
lerna create testCommand
lerna add commander

defined

批改./projectCommand/packages/testCommand/package.json

{
    ...
    "bin": {"demo": "./bin/index.js"}
}

init cli

在中创立./projectCommand/packages/testCommand/bin/index.js。编辑内容如下:

#!/usr/bin/env node

// 疾速引入 Commander 的实例
const program = require('commander')
// 定义选项
program
    .option('-d, --debug', 'output extra debugging')
    .option('-s, --small', 'small pizza size')
// 解析选项,即:执行选项
program.parse(process.argv)
    // process.argv 会获取命令行的数据,返回类型是数组。// 依据选项及其值,执行相应逻辑。if (program.debug) console.log(program.opts())
if (program.small) console.log('- small pizza size')

该文件的解决逻辑:依据选项执行相应输入。

usage

在本包中应用命令

./projectCommand/packages/testCommand 下执行 npm link
再执行 demo -d,则输入:{debug: true, small: undefined}
再执行 demo -s,则输入:- small pizza size
若失去相应输入,则验证 cli 运行正确。

在其余包中应用命令

创立一个其余包
./projectCommand/中执行

lerna create useCommand
lerna add testCommand
cd packages/testCommand
npm unlink               // 勾销全局软链接该包
demo -d                  // 验证是否勾销胜利
// => zsh: command not found: demo

编辑./projectCommand/packages/useCommand/package.json

{
    ...
    "script": {
        ...
        "useDemo": "demo -d"
    }
}

./projectCommand/packages/useCommand/ 下执行

npm run useDemo
// => {debug: true, small: undefined}

若失去相应输入,则验证 cli 运行正确。

后记

记得在 ./projectCommand/packages/testCommand 下执行 npm unlink
删除 projectCommand 我的项目。

为什么应用 lerna 创立我的项目

我曾经学习了 lerna。不必也是节约。

package.json 中的 bin 字段

它是定义命令的中央。本地中定义的命令叫 demo。读者也能够叫别的名字。也能够定义多个命令。
定义命令在 package.json 中。应用命令在终端中。执行命令时会执行 package.json 中 bin 字段对应的文件。

命令对应的文件

#!/usr/bin/env node是表明以后文件是可执行文件。应用 node 解析以后文件。可执行文件的第一行必须是它。
请应用 commonjs 标准编辑该文件。

应用命令

若是全局装置该包则全局能够应用该包的命令。
若是部分装置该包则部分能够应用该包的命令。


by stone

正文完
 0