overview
官网写的readme太差了,连一个像样的demo都没有。我看了几天readme也没学会。起初还是去看源码本人揣摸进去的。是tj太nb了,让我这个小白的看不懂他的的文章,还是写不分明本人的库能干什么、怎么干。上面是我写的demo。不便像我这样的小白入门。若你能看懂tj写的readme。关了这个页面吧。
init project
mkdir projectCommandcd projectCommandlerna initlerna create testCommandlerna 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 useCommandlerna add testCommandcd packages/testCommandnpm 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