在 pnpm 工作区(monorepo)中,hoist-pattern
配置项用于决定哪些依赖应该被提升(hoist)到工作区的根节点 node_modules
目录中,而不是保留在每个工作区包各自的 node_modules
目录下。这有助于减少磁盘空间占用并加速依赖的安装速度。
hoist-pattern[]=*eslint*
和 hoist-pattern[]=*babel*
这两个配置意味着:
- 所有以
eslint
开头的依赖包及其子依赖将会被提升到工作区的根node_modules
目录下。 - 所有以
babel
开头的依赖包及其子依赖也会被提升到同样的位置。
举例说明,如果工作区内的某个包的 package.json
中有这样的依赖:
{
"dependencies": {
"eslint": "^8.0.0",
"eslint-config-airbnb": "^19.0.0",
"babel-core": "^7.0.0",
"babel-eslint": "^10.0.0"
}
}
那么,eslint
、eslint-config-airbnb
、babel-core
和 babel-eslint
这些包及其它们的依赖(如果有的话)都将被提升到工作区根目录的 node_modules
文件夹下,而不是在该包自己的 node_modules
目录下。
需要注意的是,过度提升依赖可能导致依赖版本冲突或某些依赖在特定工作区包内不能正确加载的问题,所以在设置 hoist-pattern
时应当谨慎权衡利弊。