Angular 20升级后ng package build产物缺失lib文件夹问题求助
我之前升级到Angular 20的时候也遇到过一模一样的问题!折腾了好一会儿才找到原因,给你分享几个可能的解决方向:
检查angular.json配置:Angular 20对库的build输出结构做了调整,你可以看看
projects -> your-lib -> architect -> build -> options里的outputPath是不是直接指向了dist/your-lib,而不是嵌套的dist/your-lib/lib。新版本默认会把编译后的产物直接放在dist的库目录下,不再生成额外的lib子文件夹。你可以对比一下新创建的库项目的angular.json配置,确认是不是这个原因。更新package.json的入口字段:如果你的库package.json里还保留着旧版本的路径配置(比如
main、module、exports字段指向./lib/xxx),那肯定会找不到文件。需要改成直接指向dist目录下的产物,比如./your-lib.esm.js或者./index.js,具体路径可以参考build后dist目录里的实际文件结构。确保CLI版本一致:有时候全局Angular CLI和项目本地的版本不匹配也会引发这类问题。你可以运行
ng version检查一下,确保全局和本地的@angular/cli都是20.x版本。如果不一致,要么升级全局版本,要么用npx ng build your-lib来调用项目本地的CLI执行构建。清理缓存后重新构建:试试删除
node_modules、dist文件夹,然后运行npm install和ng build your-lib --clean,有时候缓存残留会导致一些奇怪的输出异常。
另外你提到新建项目也出现同样情况,那大概率是Angular 20本身的输出结构变更导致的,而非你的项目配置问题。你可以查看新建项目build后的dist目录,应该能直接看到编译好的js、d.ts等文件,而不是嵌套在lib文件夹里。如果是这样,只需要调整你的引用路径或者package.json里的入口配置即可。
内容来源于stack exchange

