创建一个简单的脚手架
- 创建一个 npm 项目:
mkdir simple-cli
npm init -y
- 创建指令文件
cd simple-cli
mkdir bin
创建 index.js 文件,在首行输入:
#!/usr/bin/env node
- 注册指令名称
在 package.json中添加 bin 属性:
{
"bin": {
"test-cli": "bin/index.js"
}
}
- 登录 npm,并发布
npm login
npm publish
-
这里登录时 npm 需要开启 Two Factor Authentication(双因素身份验证),操作步骤如下:
- 网页登录npm账号
- 进入到个人 Account设置里
- enable 2FA
- 选择一个验证方式,提交后显示一个二维码
- 手机上下载身份验证器,本次下载是腾讯身份验证器APP
- 扫描网页上的二维码,验证器出现6为验证码
- node 中 npm 登录时输入6位验证码即可。
-
在
node12
版本之前,安装全局npm
包时,如果当前文件夹有同名的文件夹,npm
会默认把全局安装的指令链接到本地同名文件,不过在node15
版本以后,这个特性没有了,需要手动去配置软连接。 -
发布记录如下:
这时在 npm 官网登录个人账号进入packages里可以看到本次发布的包。
- 全局安装发布的包
npm i -g simple-cli
-
npm 包更新
- 查看包当前版本号:
npm view packageName versions
- 提交修改版本:
npm version <update_type>
- update_type 有3个参数:a.b.c
- 第一位版本号:
npm version major
- 第二位版本号:
npm version minor
- 第三位版本号:
npm version patch
- 此操作只是在本地修改了版本号
- 发布更新到 npm
npm publish
- 查看包当前版本号:
-
验证
-
查询指令:
which web-simple-cli
返回 web-simple-cli 指令所在目录:/usr/local/bin/web-simple-cli
-
查看指令对应文件目录:
ll /usr/local/bin/web-simple-cli
返回
lrwxr-xr-x 1 userName admin 47 2 12 17:15 /usr/local/bin/web-simple-cli@ -> ../lib/node_modules/web-simple-cli/bin/index.js
返回表明指令所对应的文件是安装包所在的 /usr/local/lib/node_modules/simple-cli/bin/index.js 文件。
-
查看安装包:
cd /usr/local/lib/node_modules
ll
返回drwxr-xr-x 4 userName wheel 128 2 12 17:15 simple-cli/
返回表明包对应的是远程安装的包。
-
在 node 12.11版本前,如果全局安装包时所在路径中存在和要安装的包的同名包,则安装时会把指令文件对应的文件指向当前目录下的同名包,这样主要时方便全局调试包,不过 node 12.11.1的版本后取消了该功能。
-
要在本地调试 npm 包,要让包的全局指令指向本地包,那就是先到本地包内,执行
npm link
将当前包的指令添加到全局覆盖调npm远程仓库的包文件夹。lrwxr-xr-x 1 tangna wheel 69 2 13 11:18 web-simple-cli@ -> ../../../../Users/tangna/workspace/codes/web-architect/web-simple-cli
验证:修改本地包的代码,执行指令可以看到更新。
-
-