旧的nextjs或expo项目改用pnpm管理包
Next.js项目
官方支持
Next.js 15 完全支持 pnpm。
从 yarn 迁移到 pnpm 的步骤
- 删除原有的依赖文件:
rm -rf node_modules
rm yarn.lock
- 安装 pnpm (如果还没安装):
npm install -g pnpm
- 将 package.json 中的 packageManager 字段更新为 pnpm:
{
"packageManager": "pnpm@8.x" //版本号必须写全
}
建议取消这项。
- 使用 pnpm 重新安装依赖:
pnpm install
- 如果项目中有 .npmrc 文件,需确保兼容 pnpm,添加以下配置:
node-linker=hoisted
shamefully-hoist=true
注意事项:
- 检查 .gitignore 是否包含
.pnpm-store/
- 更新 CI/CD 配置文件中的包管理器命令
- 如果使用 Dockerfile,更新相关命令从 yarn 到 pnpm
- 检查项目中的脚本命令,将 yarn 相关命令替换为 pnpm
一些常用命令对照:
yarn -> pnpm
yarn add -> pnpm add
yarn remove -> pnpm remove
yarn run -> pnpm run
以上内容来自AI总结。
Expo项目
如果是一个之前的expo项目呢,用的yarn,现在想改用pnpm? 以下是AI回答(Claude-3.5-Sonnet,截至 2024 年 10 月 22 日的最新模型):
从 yarn 迁移到 pnpm 的步骤
对于 Expo 项目从 yarn 迁移到 pnpm,步骤略有不同,因为需要特别注意 Expo 的特定配置:
- 首先清理现有依赖:
rm -rf node_modules
rm yarn.lock
- 在项目根目录创建或修改
.npmrc
文件,添加以下配置:
node-linker=hoisted
shamefully-hoist=true
auto-install-peers=true
- 修改 package.json,添加 packageManager 字段:
{
"packageManager": "pnpm@8.x"
}
- 使用 pnpm 重新安装 依赖:
pnpm install
- 更新 Expo 相关脚本,在 package.json 中:
{
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"web": "expo start --web"
}
}
特别注意事项:
- Expo 依赖处理:
- 确保 expo-cli 正确安装:
pnpm add -g expo-cli
- 如果使用 EAS(Expo Application Services),更新 eas-cli:
pnpm add -g eas-cli
- 常见问题解决:
- 如果遇到模块解析问题,可能需要在 .npmrc 中添加:
public-hoist-pattern[]=*expo*
public-hoist-pattern[]=@expo*
- Expo 开发工具的命令对照:
yarn start -> pnpm start
yarn ios -> pnpm ios
yarn android -> pnpm android
yarn web -> pnpm web
expo doctor -> pnpm exec expo doctor
- 如果使用 EAS build,更新 eas.json 中的缓存配置:
{
"build": {
"development": {
"cache": {
"paths": [
"~/.pnpm-store"
]
}
}
}
}
- 如果项目使用了 React Native 原生模块,可能需要重新运行:
pnpm exec expo prebuild
官方支持情况
Expo官方对pnpm的支持状态如下:
- 现状:
- Expo官方主要支持yarn和npm
- pnpm的支持是实验性的,不是官方优先推荐的包管理器
- 某些Expo功能可能在使用pnpm时出现兼容性问题
- 已知问题:
- expo-development-client在使用pnpm时可能有链接问题
- 某些原生模块的自动链接可能不正常
- prebuild命令可能需要额外配置
- 某些expo插件可能无法正确解析依赖关系
- 官方建议:
- 对于新项目,推荐使用yarn或npm
- 如果一定要使用pnpm,建议:
- 使用最新版本的expo和pnpm
- 确保正确配置.npmrc
- 做好充分测试,特别是原生功能
- 替代建议:
- 如果项目不复杂,建议继续使用yarn
- 如果团队确实需要使用pnpm:
- 可以考虑等待Expo官方更好的pnpm支持
- 或在非原生功能的项目中使用pnpm
- 做好版本管理和回退方案
总的来说,虽然技术上可以使用pnpm管理Expo项目,但由于官方支持有限,建议在生产环境中谨慎使用。