为什么要使用 `yarn link`?为什么不只是 node_modules 中的 symlink?

Why use `yarn link`? Why not just symlink in node_modules?

我有一个本地节点模块 foo 我正在处理,作为我项目中的 git 子模块。它位于 $TOP/submodules/foo。我明白我能做到:

(cd submodules/foo && yarn link)
yarn link foo

这将创建从 node_modules/foosubmodules/foo 的两个符号链接链,现在我可以像在我的主项目中使用任何其他 npm 模块一样使用它,它会立即反映我所做的更改.凉爽的。但这比仅仅更好:

ln -s ../submodules/foo node_modules/foo

? yarn 似乎没有在任何地方记录符号链接,因此它不会同步到我的其他开发机器或任何东西。 我应该使用 yarn link 有什么充分的理由吗?

我相信 yarn 在内部会为您做 shimming,这样您就可以在 ln -s 根本无法识别的多个平台上使用它。

https://github.com/yarnpkg/yarn/blob/master/src/cli/commands/link.js#L34 https://github.com/yarnpkg/yarn/blob/master/src/util/fs.js#L679

此外,它还为您处理其他一些细微的事情,而且语法更简单。