Jac*_*Guy 24 npm lerna yarnpkg
我有一个正在开发的项目的lerna回购.它有几个相互依赖的包.为了简化开发,没有发布任何软件包,它们依赖于彼此的最新版本.
目录树
foo/
packages/
core/
package.json
errors/
package.json
Run Code Online (Sandbox Code Playgroud)
富/包/核心/的package.json
{
...
dependencies: {
"@foo/errors": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
我有另一个项目,bar我正在用来测试lerna项目.目前我正在使用本地file:依赖关系链接到它的依赖项:
酒吧/的package.json
{
...
dependencies: {
"@foo/core": "../foo/packages/core"
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法给了我一个麻烦的世界.
yarn install在bar.Yarn遵循file:依赖关系@foo/core,看到它依赖于@foo/errors并且不了解lerna的符号链接.这导致它失败,告诉我它找不到@foo/errors.这使得为这个项目编写实际代码是次要的依赖管理.
我怎样才能做到这一点(我感觉相当简单?)项目结构工作?此时打开到lerna/yarn/npm/pnpm/shell脚本/ MS DOS.
您应该能够使用npm link. 虽然我还没有尝试过使用未在 npm 上发布的本地依赖项。
目录树
foo/
packages/
core/
package.json
errors/
package.json
bar/
package.json
Run Code Online (Sandbox Code Playgroud)
foo/packages/core/package.json
{
...
dependencies: {
"@foo/errors": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
栏/package.json
{
...
dependencies: {
"@foo/core": "../foo/packages/core"
}
}
Run Code Online (Sandbox Code Playgroud)
运行以下命令
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
Run Code Online (Sandbox Code Playgroud)
删除 package-lock.json 文件通常弊大于利!而有关无法找到@foo/errors,如果你跑了NPM引导,@foo/core应该被符号链接到@foo/errors。一种可能性可能是您的 lerna 脚本在您使用纱线运行安装/链接时正在使用 npm。
您可以将lerna移到同时包含“ foo”和“ bar”的目录吗?那可能吗?
root/
foo/
packages/
core/
package.json
errors/
package.json
bar/
package.json
lerna.json
Run Code Online (Sandbox Code Playgroud)
在您的lerna文件中,您可以将仓库添加到软件包中
{
"lerna": "2.9.0",
"packages": [
"foo/packages/*",
"bar/",
],
}
Run Code Online (Sandbox Code Playgroud)
小智 0
使用可以这样尝试:
foo/packages/core/package.json
{
...
dependencies: {
"@foo/errors": "file:../errors"
}
}
Run Code Online (Sandbox Code Playgroud)
栏/package.json
{
...
dependencies: {
"@foo/core": "file:../foo/packages/core"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4973 次 |
| 最近记录: |