我有一个正在进行中的项目的lerna回购。它有几个相互依赖的程序包。为了简化开发,没有发布任何软件包,并且它们相互依赖最新版本。
目录树
foo/
packages/
core/
package.json
errors/
package.json
foo / packages / core / package.json
{
...
dependencies: {
"@foo/errors": "*"
}
}
我还有另一个项目
bar
,用于测试lerna项目。目前,我正在使用本地file:
依赖关系链接到其依赖关系:bar / package.json
{
...
dependencies: {
"@foo/core": "../foo/packages/core"
}
}
这种方法给我带来了很多麻烦。
yarn install
中进行bar
。 Yarn遵循file:
到@foo/core
的依赖关系,发现它依赖于@foo/errors
,并且不知道lerna的符号链接(symbolic link)。这导致它失败,告诉我找不到@foo/errors
。 这使得为该项目编写实际代码仅次于这种依赖管理的困惑。
我怎样才能使这个(我觉得很简单?)项目结构起作用?此时打开lerna / yarn / npm / pnpm / shell脚本/ MS DOS。
最佳答案
您应该可以使用npm link
完成此操作。尽管我尚未使用未在npm上发布的本地依赖项进行尝试。
目录树
foo/
packages/
core/
package.json
errors/
package.json
bar/
package.json
foo / packages / core / package.json
{
...
dependencies: {
"@foo/errors": "*"
}
}
bar / package.json
{
...
dependencies: {
"@foo/core": "../foo/packages/core"
}
}
运行以下命令
cd foo
npx lerna clean
npx lerna bootstrap --hoist
npm run build # command to build your projects
cd packages/core
npm link
cd ../../../bar
npm i
npm link @foo/core
删除package-lock.json文件通常弊大于利!关于无法找到
@foo/errors
的问题,如果您运行npm bootstrap,则应将@foo/core
与@foo/errors
符号链接(symbolic link)。一种可能是您的lerna脚本在运行带有yarn的安装/链接时正在使用npm。关于npm - 允许本地项目依赖于本地lerna包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49037987/