tl;dr
packages/projectB의 호이스팅을 막기 위해서는 projectB가 하나의 워크스페이스가 되어야하고,nmHoistingLimits: workspaces
값을 사용하여 호이스팅을 막을 수 있습니다.packages/projectB/.yarrc.yml
nmHoistingLimits: workspaces
packages/projectB/package.json
{
"name": "projectb",
...
"private": true,
"workspaces": [
"*"
]
}
다음과 같은 간단한 yarn workspace가 있습니다.
파일구조
/
package.json
packages
├─projectA
│ └─package.json
└─projectB
└─package.json
/package.json
{
...
"workspaces": [
"packages/*"
]
}
package.json
...
"workspaces": {
"packages": [
"packages/*"
],
"nohoist": [
"*"
]
}
'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead
:nmHoistingLimits
Defines the highest point where packages can be hoisted. One of workspaces (don't hoist packages past the workspace that depends on them), dependencies (packages aren't hoisted past the direct dependencies for each workspace), or none (the default, packages are hoisted as much as possible). This setting can be overriden per-workspace through the installConfig.hoistingLimits field.
:번역따라서 packages/projectB의 호이스팅을 막기 위해서는 projectB가 하나의 워크스페이스가 되어야하고,
패키지가 호이스팅 될 수 있는 가장 높은 지점을 정의합니다.
workspaces: 종속된 워크스페이스를 지나 패키지를 호이스팅하지 않습니다.
dependencies: 패키지는 워크스페이스의 직접적인 디펜던시를 지나 호이스팅 되지 않습니다
none: default 이며, 가능한 패키지는 호이스팅 됩니다.
이 설정은 installConfig.hoistingLimits field를 통해 각 워크스페이스에 오버라이드될 수 있습니다.
nmHoistingLimits: workspaces
값을 사용하여 호이스팅을 막을 수 있습니다.packages/projectB/.yarrc.yml
nmHoistingLimits: workspaces
packages/projectB/package.json
{
"name": "projectb",
...
"private": true,
"workspaces": [
"*"
]
}
yarn set version berry
cd packages/projectB
yarn