feat: add ${sourceRoot} variable interpolation for NX workspaces #244
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.
Summary
Adds support for
${sourceRoot}variable interpolation in output paths, enabling users to customize translation file locations across multiple apps/libs in NX workspaces using a single centralized configuration.Problem (Issue #220)
When using transloco-keys-manager in NX monorepos, users want to:
transloco.config.jsat the workspace rootpublic/i18ninstead ofassets/i18n)Previously, setting
output: '${sourceRoot}/../public/i18n'would create a literal${sourceRoot}folder instead of interpolating the variable.Solution
This PR implements variable interpolation for
${sourceRoot}:Example configuration:
Results in different paths per project:
apps/my-app/public/i18n/en.jsonlibs/my-lib/public/i18n/en.jsonChanges
${sourceRoot}interpolation inresolveConfigPaths()__sourceRootinternal field toConfigtypescopePathMapvalues viabuildScopeFilePaths()interpolatePathFactory()helperTest Coverage
New tests:
__tests__/path.utils.spec.ts- 5 tests forbuildScopeFilePaths()interpolation__tests__/resolveConfig/resolveConfig.spec.ts- 7 tests including NX workspace scenarioAll 73 tests passing ✅
Backward Compatibility
✅ Fully backward compatible - paths without
${sourceRoot}work exactly as beforeFixes #220