命令行执行原理
- 全局可执行命令(如:webpack、tsc、create-react-app、vue)路径
/usr/local/bin
,这些全局命令实际上是软链接到/usr/local/lib/node_modules
对应的包 , 找到对应的包的bin
目录执行对应的文件; node
相当于是操作系统的客户端,全局命令相当于node的可执行文件;- 在某个包下执行
npm link
,相当于将该包软链接到全局的可执行命令中; - 开发调试时, A 包中引用本地的 B 包步骤:
- 在 B 包路径下执行
npm link
软链接到全局; - 在 A 包路径下执行
npm link B
本地软链接到 B 包; - 开发调试完毕,
npm publish
时,先在 A 包路径下执行npm unlink B
, 将 B 包依赖添加到package.json
中,在 B 包路径下执行npm unlink B
/npm uninstall -g B
- 在 B 包路径下执行
- 为什么全局输入 vue、tsc、create-react-app 命令,可以执行一些操作?
- 实际上是执行了 node vue xxx;
- 注册为全局可执行指令,需要在文件顶部指定
#!/usr/bin/env node
;
命令行参数解析
- 使用
process
下的argv
可以拿到命令行输入的参数;
lerna
使用场景:解决开发大型项目,项目依赖的各个模块之间的耦合依赖问题以及各包的版本管理问题
lerna官网
github
一些常用命令记录命令:
lerna add packageA
在所有的 packages 中安装 packageA 包;lerna add packageA packages/core
在 core 包中安装 packageA 包;lerna clean
清理所有 packages 的 node_modules;lerna bootstrap
安装所有 packages 的依赖;lerna publish
发布;