umi 项目使用 pnpm 无法启动

看到各种开源项目从 yarn 迁移到 pnpm,心血来潮也想来尝试一下 pnpm 这款被吹爆的包管理工具。

项目之前使用的 yarn,需要将其 lock 文件转换一下。查阅文档 pnpm 提供了相应命令,直接使用就完事,nice。

▶ pnpm import
  /.../

完事后会生成 'pnpm-lock.yaml' 文件

├── package.json
└── pnpm-lock.yaml

删除所有 node_modules 文件执行 pnpm install 重新安装依赖。

启动项目,然后一大堆报错,"Can't resolve 'xxx' in 'xxxx''。

研究文档发现,yarn 和 npm 会将所有依赖平铺在 node_modules,在项目中可以访问任何依赖的包。默认配置的 pnpm 创建 node_modules 时不会平铺依赖,我们需要将依赖提升至node_modules根目录。

创建 '.npmrc' 文件

shamefully-hoist=true

此配置将所有内容提升到node_modules的根目录,如果明确知道需要提升的包名,可以按如下设置

public-hoist-pattern[]=moment
public-hoist-pattern[]=@umijs/*
public-hoist-pattern[]=antd
public-hoist-pattern[]=umi-request
posted @ 2022-02-09 16:15  叫我阿森就行  阅读(2723)  评论(0)    收藏  举报