本文最后更新于:2024年4月25日 上午
创建Node CLI
入口文件
新建bin
目录,新建index.js
作为CLI
入口文件
bin/index.js
1 2 3
| #!/usr/bin/env node
console.log('Hello World!')
|
第一行要写#!/usr/bin/env node
声明在用户环境变量中查找node来执行脚本文件
注册CLI
1 2 3 4
| pnpm init
pnpm add typescript @types/node -D
|
指定type
属性为module
,bin
对象属性键声明cli
调用名称,属性声明入口文件位置
package.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| { "name": "cli-demo", "version": "1.0.0", "description": "", "type": "module", "main": "index.js", "scripts": { "dev": "tsc -w" }, "keywords": [], "bin": { "cli-demo": "./bin/index.js" }, "author": "", "license": "ISC", "devDependencies": { "@types/node": "^18.11.18", "typescript": "^4.9.4" } }
|
tsconfig.joson
也指定模块为ES6
,暂时使用tsc
编译ts
tsconfig.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| { "compilerOptions": { "target": "ESNext", "module": "ES6", "rootDir": "src", "outDir": "dist", "removeComments": true, "esModuleInterop": true, "moduleResolution": "node", "forceConsistentCasingInFileNames": true, "strict": true, "alwaysStrict": true, "skipLibCheck": true } }
|
最后,使用npm link
命令声明cli-demo
后即可使用了
CAC
安装
创建实例
src/index.ts
1 2 3 4 5 6 7 8
| import { cac } from 'cac'
const cli = cac('cli-demo')
cli.help() cli.version('0.0.1') cli.parse()
|
使用pnpm dev
编译ts
文件,在bin/index.js
中引入编译后的js
文件
bin/index.js
1 2 3 4
| #!/usr/bin/env node
import '../dist/index.js'
|
现在就可使用cli-demo -v/ -h
命令了
1 2 3 4 5 6 7 8 9 10 11
| ➜ cli-demo -v cli-demo/0.0.1 win32-x64 node-v18.12.1 ➜ cli-demo -h cli-demo/0.0.1
Usage: $ cli-demo <command> [options]
Options: -h, --help Display this message -v, --version Display version number
|