如何仅安装TypeScript构建所需依赖,避免构建过程下载150MB冗余包
优化npm构建过程依赖下载量的可行方案
以下方案均不会改动你现有的package.json依赖配置,不影响团队本地开发的规范校验流程,仅针对构建环节减少依赖下载量:
方案一:按需安装构建依赖(最推荐)
利用npm的--no-save参数临时安装构建所需的依赖,不会写入package.json或lock文件,构建流程调整为:
# 先安装生产依赖(仅dotenv,体积极小) npm install --production # 临时加装构建必须的两个开发依赖,不修改项目配置 npm install --no-save typescript@^4.3.5 @types/node@^16.0.0 # 执行构建 npm run build # 清理全部依赖后重装纯生产依赖 rm -rf node_modules npm install --production
该方案全程仅下载约60MB的依赖,和你预期的体积一致,不需要额外维护其他配置,也不会影响原有项目的依赖规则。
方案二:使用临时构建配置文件
在项目中新增一个仅用于构建环节的配置文件package.build.json,内容仅包含构建所需的依赖和脚本:
{ "name": "your-project-build", "version": "1.0.0", "scripts": { "build": "tsc" // 和你原有build命令保持一致即可 }, "dependencies": { "@types/node": "^16.0.0", "typescript": "^4.3.5", "dotenv": "^10.0.0" } }
构建流程调整为:
# 替换为构建专用配置 cp package.build.json package.json npm install npm run build # 恢复原项目配置 git checkout package.json # 后续生产依赖安装步骤不变 rm -rf node_modules npm install --production
该方案适合构建依赖较多的场景,方便统一管理构建依赖版本,注意需要同步原项目的依赖版本号即可。
方案三:全局预装构建依赖(适合固定CI/CD环境)
如果你的构建是在固定的CI/CD环境中执行,可以提前在构建镜像中全局安装对应版本的typescript和@types/node,构建时直接调用全局工具即可,不需要下载这两个依赖:
# 仅安装生产依赖 npm install --production # 直接调用全局tsc执行构建,不需要额外下载开发依赖 tsc # 不需要额外清理开发依赖,直接得到最终的轻量化依赖
该方案构建阶段仅需要下载不到1MB的生产依赖,下载量最小,注意需要保证全局安装的typescript和@types/node版本和项目要求的版本完全一致,避免编译兼容性问题。
内容的提问来源于stack exchange,提问作者David Lima
相关产品推荐
相关产品推荐

