fix(plugin): normalize workspace package import paths in metadata generator#3798
fix(plugin): normalize workspace package import paths in metadata generator#3798maruthang wants to merge 1 commit intonestjs:masterfrom
Conversation
|
You sure it won't break NestJS monorepo projects? |
|
Hi @kamilmysliwiec, great question! The For intra-monorepo imports that resolve to relative paths (without going through The new test suite covers both cases (scoped/unscoped workspace packages through |
|
Could you resolve conflicts? |
74b3160 to
478d8d5
Compare
|
Hi @kamilmysliwiec, conflicts resolved! Rebased onto latest master — the only conflict was in |
PR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
What is the current behavior?
PluginMetadataGenerator(viaModelClassVisitorandControllerClassVisitor) computes relative paths from the source directory to the physicalnode_modules/location of workspace packages. This produces import paths like../node_modules/@amk/utils/src/dto/order.dtoin the generated metadata, which causes TypeScript TS2742 errors at compile time.Issue Number: #3453
What is the new behavior?
A
normalizePackagePathhelper is extracted inplugin-utils.ts. It detects when a resolved path passes throughnode_modules/and strips everything up to that boundary, returning a bare package specifier (e.g.,@amk/utils/src/dto/order.dto). BothModelClassVisitorandControllerClassVisitornow use this helper in theircollectedMetadata()methods, so generated metadata always contains correct importable package paths.Does this PR introduce a breaking change?
Other information
7 new unit tests added in
test/plugin/normalize-package-path.spec.tscovering bare package paths, scoped packages, deep paths, and paths that should not be modified. All 152 tests pass.