使用pnpm和Turbo构建生产环境时无法排除开发依赖的问题
解决方案
核心思路
Turbo 构建 TypeScript 项目时,必须依赖开发依赖(比如 typescript、各类 @types/* 类型包、编译相关工具)才能完成代码编译,所以构建阶段不能使用 pnpm install --prod,正确的流程应该是先全量安装依赖完成构建,再单独生成仅含生产依赖的部署包。
具体步骤
1. 完整安装依赖并执行构建
先安装所有依赖(包括开发依赖),确保 Turbo 能完成 TypeScript 编译:
pnpm install turbo build
2. 生成仅含生产依赖的部署包
构建完成后,用 pnpm 的部署命令生成干净的生产环境目录,自动排除开发依赖:
pnpm deploy --prod ./dist-deploy
这个命令会在 ./dist-deploy 目录下生成包含项目生产代码、生产依赖的完整部署包,无需手动处理依赖。
3. CI/CD 场景优化
如果是在 CI/CD 流程中,可以分阶段执行,避免重复安装:
# 安装所有依赖用于构建 pnpm install --frozen-lockfile # 执行构建 turbo build # 清理现有依赖,重新安装生产依赖(可选,或直接用deploy命令) pnpm install --prod --frozen-lockfile
为什么全局安装 Turbo 没用?
Turbo 只是构建调度工具,TypeScript 编译依赖的是项目本地的 typescript 包、tsconfig.json 配置以及各类类型定义文件,这些都属于开发依赖。全局 Turbo 运行时依然会调用项目本地的依赖,所以缺少开发依赖必然导致构建失败。
内容的提问来源于stack exchange,提问作者Badr
相关产品推荐
相关产品推荐

