fix(compiler): run tsconfig paths plugin before user plugins in tsc compiler#3326
Open
yogeshwaran-c wants to merge 2 commits intonestjs:masterfrom
Open
fix(compiler): run tsconfig paths plugin before user plugins in tsc compiler#3326yogeshwaran-c wants to merge 2 commits intonestjs:masterfrom
yogeshwaran-c wants to merge 2 commits intonestjs:masterfrom
Conversation
When a non-default project is selected during `nest generate`, the `getSpecFileSuffix` call was incorrectly using `appName` (the original CLI input) instead of `selectedProjectName` (the user's interactive selection). This caused per-project `specFileSuffix` configuration to be ignored, falling back to global config instead. The adjacent `shouldGenerateSpec` and `shouldGenerateFlat` calls both correctly use `selectedProjectName` -- this aligns `getSpecFileSuffix` with the same pattern.
…ompiler The tsc watch compiler (WatchCompiler) correctly prepends the tsconfig paths plugin before user-defined before hooks using unshift(), ensuring path aliases are resolved before other transformations process imports. However, the non-watch tsc compiler (Compiler) was appending the tsconfig paths plugin after user plugins via before.concat(tsconfigPathsPlugin). This inconsistency could cause user plugins to receive unresolved path aliases, leading to incorrect transformations. Align the non-watch compiler with the watch compiler by placing the tsconfig paths plugin first in the before hooks array.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What kind of change does this PR introduce?
Bug fix
What is the current behavior?
In the non-watch tsc compiler (
Compilerclass inlib/compiler/compiler.ts), thetsconfigPathsPluginis appended after user-definedbeforehooks:This means user plugins process imports with unresolved path aliases, which could lead to incorrect transformations when plugins depend on seeing resolved import paths.
In contrast, the watch compiler (
WatchCompilerinlib/compiler/watch-compiler.ts) correctly prepends the tsconfig paths plugin before user hooks usingunshift():This inconsistency means
nest build(non-watch) andnest build --watchapply TypeScript transformer plugins in a different order, which can cause subtle differences in build output when custom compiler plugins are used.What is the new behavior?
The tsconfig paths plugin now runs before user-defined plugins in the non-watch tsc compiler, matching the watch compiler behavior:
This ensures path aliases are resolved before any user plugins process imports, consistent across both watch and non-watch compilation modes.
Additional context