return fs
.lstat(dest)
.then(() => fs.unlink(dest))
.catch(() => {
/* nothing exists at destination */
})
.then(() => fs.symlink(src, dest, type));
}
更多关于软链的文章,我后面会单独写一篇文章介绍软硬链接,这里知道
lerna 链接部分
的实现就可以了。Node fs 官网 参考2
lerna 基本使用
lerna 环境配置
lerna
在使用之前需要全局安装 lerna
工具。
npm install lerna -g
初始化一个lerna 项目
mkdir lerna-demo
,在当前目录下创建文件夹lerna-demo
,然后使用命令 lerna init
执行成功后,目录下将会生成这样的目录结构。,一个 hello world
级别的 lerna
项目就完成了。
image.png
- packages(目录)
- lerna.json(配置文件)
- package.json(工程描述文件)
lerna 常用命令
介绍一些 lerna
常用的命令,常用命令这部分可以简单过一遍,当作一个工具集收藏就行,需要的时候来找下,用着用着就熟练了,主要可以实操下下面的实战小练习,这个过程会遇到一些坑的。
- 初始化
lerna
项目
lerna init
- 创建一个新的由
lerna
管理的包。
lerna create
- 安装所有·依赖项并连接所有的交叉依赖
lerna bootstrap
- 增加模块包到最外层的公共
node_modules
中
lerna add axios
- 增加模块包到
packages
中指定项目 下面是将ui-web
模块增加到example-web
项目中
lerna add ui-web --scope=example-web
- 在
packages
中对应包下的执行任意命令 下面的命令,是对packages
下的example-web
项目执行yarn start
命令 ,比较常用,可以把它配置到最外层的package.json
中。
lerna exec --scope example-web – yarn start
如果命令中不增加 --scope example-web
直接使用下面的命令,这会在 packages
下所有包执行命令rm -rf ./node_modules
lerna exec – rm -rf ./node_modules
- 显示所有的安装的包
lerna list // 等同于 lerna ls
这里再提一个命令也比较常用,可以通过json
的方式查看 lerna
安装了哪些包,json
中还包括包的路径,有时候可以用于查找包是否生效。
lerna list --json
- 从所有包中删除
node_modules
目录
lerna clean
⚠️注意下
lerna clean
不会删除项目最外层的根node_modules
- 在当前项目中发布包
lerna publish
这个命令可以结合 lerna.json
中的 "version": "independent"
配置一起使用,可以完成统一发布版本号和packages
下每个模版发布的效果