命令行程序的入口文件一般叫 cli.js;
home 目录
nodejs get home directory: 系统默认 nodejs get home variable: nodejs 获取系统的 home 目录,用户改了 home 目录的路径:const home = process.env.HOME。
优先用 home 变量:
const home = process.env.HOME || homeDir
nodejs 的 path 模块是专门用来拼路径的,
const p = require("path")
const dbPath = p.join(home, ".todo") //home 目录下的 todo 文件
webstorm 的 run / language & framworks 设置
1、webstorm -> run -> Edit Configuration -> JavaScript file -> 设为入口文件 -> Application parameters -> 添加命令行 command -> Apply -> ok;
2、webstorm 报错:这些模块是 nodejs 里面的东西,webstorm 不知道用户用的是 js 还是 nodejs ,所以需要设置: settings -> languages & Franmworks -> Node.js -> 勾选 Coding assistance of Node.js -> 在 JavaScript -> Libraries -> 勾选 Node.js Core
发布到 npm
1、改 package.json
"version": "0.0.1", //修改版本号
"bin": { //添加 bin
"t": "cli.js" //表示在命令行输入 t ,就执行 node cli.js 命令
},
"main": "index.js", //入口文件
2、cli.js 添加 node shebang ,作用是告诉命令行用什么来执行这些代码
#!/usr/bin/env node
3、需要将 cli.js 变成可执行文件(windows 上没有这个概念,mac 和 linux 有),可在命令行执行以下代码,这样从 npm 下载了包后,就会有 t 命令。
chmod +x cli.js
4、发布之前要告诉 npm 哪些文件是有用的,package.json 里添加 files,
"files":[
//"cli.js","db.js","index.js" 可简写为
"*.js"
],
5、添加查询版本命令
//cli.js
const pkg = require('./package.json')
program
.version(pkg.version)