如何在NX Monorepo的Angular库中导入另一个NX库?
解决NX Monorepo中库内部路径映射失效的问题
正确配置方案
让库的TS配置继承根路径映射
库默认的tsconfig.lib.json不会自动继承根目录tsconfig.base.json里的paths配置,需要手动指定继承:
打开libs/commons/tsconfig.lib.json,确保extends指向根目录的配置文件,无需重复写paths:{ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../dist/out-tsc/libs/commons", "declaration": true // 保留原有库的编译配置,不需要重复paths }, "include": ["src/**/*"], "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] }明确NX项目的依赖关系
需要让NX识别到Commons库对Designsystem的代码依赖,在nx.json的项目配置里添加dependencies(注意不是implicitDependencies,后者用于非代码类依赖):{ "projects": { "commons": { "tags": [], "dependencies": ["designsystem"] } } }验证并清理缓存
执行nx run commons:build测试构建是否正常,若仍有问题,执行nx reset清理NX缓存后重试。
为什么之前的方案无效?
implicitDependencies用于标记非代码层面的依赖(比如依赖另一个库的脚本、配置),不作用于代码导入的路径解析。peerDependencies是发布npm包时的声明,Monorepo内部开发阶段,NX不会通过它处理内部库的依赖解析,因此对路径映射无效。
内容的提问来源于stack exchange,提问作者Valentin
相关产品推荐
相关产品推荐

