使用pnpm时,hoist-pattern[]=eslint hoist-pattern[]=babel这个配置的作用?
在 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 时应当谨慎权衡利弊。

浙公网安备 33010602011771号