You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 10升级至16后构建本地库失败(Ivy全编译模式)求助

Angular 16 构建本地库配置调整方案

核心问题分析

你遇到的✖ Compiling with Angular sources in Ivy full compilation mode.报错,本质是Angular 12+之后库构建默认要求适配Ivy,而你的库依赖版本仍停留在Angular 10,版本不兼容导致编译失败。

具体配置调整步骤

1. 更新peerDependencies版本

将package.json中的Angular依赖版本升级到与当前项目匹配的16.x,同时保留合理的兼容范围:

{
  "name": "@my-lib",
  "version": "1.0.0",
  "peerDependencies": {
    "@angular/common": "^16.0.0",
    "@angular/core": "^16.0.0",
    "xlsx": "^0.16.8"
  },
  "dependencies": {
    "tslib": "^2.3.0"
  }
}

注:tslib建议升级到2.3.0+,适配Angular 16的依赖要求

2. 添加Ivy编译配置(推荐)

在库的ng-package.json文件中补充Ivy相关配置,确保编译模式符合Angular库的标准要求:

{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/my-lib",
  "lib": {
    "entryFile": "src/public-api.ts",
    "umdModuleIds": {
      "xlsx": "xlsx"
    }
  },
  "allowedNonPeerDependencies": ["tslib"],
  "compilationMode": "partial"
}

compilationMode: "partial"是Angular库的默认推荐配置,可避免全量Ivy编译带来的兼容性问题。

3. 清理旧依赖与缓存

执行以下命令清理旧依赖和编译缓存,确保环境干净:

rm -rf node_modules package-lock.json
npm install
ng build @my-lib --clean

4. 检查public-api.ts导出规范

确认库的入口文件public-api.ts仅对外暴露需要公开的组件、服务等,避免导出内部未封装的代码,这会影响Ivy编译的稳定性。

额外注意事项

  • 若你的库需要兼容Angular 10和16双版本,需注意Angular 16已不再支持View Engine,更推荐直接迁移到适配Ivy的版本;
  • 可验证xlsx依赖在Angular 16下的兼容性,若出现问题可升级到最新兼容版本(如^0.18.5)。

内容的提问来源于stack exchange,提问作者Abdullah Afnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 23:30:09