Yarn link 链接本地项目

作为 JavaScript SDK 的开发者一定都知道,想要在未发布前进行测试整个包可谓是困难重重。而 yarn link
这个命令便是为了解决这个需求而产生的,它能让包引用并测试自身,即便包并未发布或不包含在 package.json
中亦然。

操作

官网链接

链接包

在命令行运行即可将当前包链接安装到这个包中,即便你在 package.json
并不会找到显式的依赖。

yarn link && yarn link ""

注:如果当前包是 cli
,即 package.json
中包含 bin
字段,则还会被链接到 yarn 的全局脚本目录中。

yarn 的全局脚本目录可以通过执行 yarn global bin
进行查看,如果要在全局执行,则需要将该目录设置到环境变量 Path
中,然后就可以全局运行命令了。
然后,便可以在项目中使用了(测试)

import  from 'pkgName'

取消链接

如果不需要了,则也可以轻易通过 unlink
移除。

yarn unlink "" && yarn unlink

注:同样的,如果当前包是 cli
,则 yarn 全局 bin
目录中也会进行删除

通用 script

每个项目都这样太麻烦了,可否添加一个通用 script
脚本呢?

当然是可以的,通过 %npm_package_name%
我们便能在 srcipt
中访问到项目名

"scripts": {
  "link:add": "yarn link && yarn link %npm_package_name%",
  "link:remove": "yarn unlink %npm_package_name% && yarn unlink"
},

参考: https://docs.npmjs.com/misc/scripts#packagejson-vars

以后便可以直接将命令复制到 script
即可直接使用了。

注:使用 %%
包裹便能在 script
中使用,该方式在 Windows 下生效,Linux 下似乎需要添加前缀 $
,不过吾辈并未测试(懒得折腾 Linux 桌面了)。
然而,问题并非不存在了,例如本地使用 Windows 构建,然而远程 CI 使用 Linux,那这个脚本就要炸了。。。所以,如果你需要上 CI 的话,还是老实改名字吧。

或者也可以使用 VSCode + WSL
?#笑