Skip to content

Commit

Permalink
fix(core): move generator should work if there are comments in tsconfig
Browse files Browse the repository at this point in the history
#13740 (#13866)

(cherry picked from commit 4f98e37)
  • Loading branch information
Coly010 authored and FrozenPandaz committed Dec 19, 2022
1 parent 9872261 commit fc4fe92
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 1 deletion.
1 change: 1 addition & 0 deletions packages/workspace/package.json
Expand Up @@ -82,6 +82,7 @@
"fs-extra": "^10.1.0",
"glob": "7.1.4",
"ignore": "^5.0.4",
"jsonc-parser": "3.2.0",
"minimatch": "3.0.5",
"npm-run-path": "^4.0.1",
"open": "^8.4.0",
Expand Down
24 changes: 24 additions & 0 deletions packages/workspace/src/generators/move/lib/update-imports.spec.ts
Expand Up @@ -340,6 +340,30 @@ export MyExtendedClass extends MyClass {};`
});
});

it('should update project ref in the root tsconfig.json when there is a comment', async () => {
tree.rename('tsconfig.base.json', 'tsconfig.json');
tree.write(
'tsconfig.json',
`// A comment\n${tree.read('tsconfig.json', 'utf-8')}`
);
await libraryGenerator(tree, {
name: 'my-source',
standaloneConfig: false,
});
const projectConfig = readProjectConfiguration(tree, 'my-source');

updateImports(
tree,
normalizeSchema(tree, schema, projectConfig),
projectConfig
);

const tsConfig = readJson(tree, '/tsconfig.json');
expect(tsConfig.compilerOptions.paths).toEqual({
'@proj/my-destination': ['libs/my-destination/src/index.ts'],
});
});

it('should only update the project ref paths in the tsconfig file when --updateImportPath=false', async () => {
await libraryGenerator(tree, {
name: 'my-source',
Expand Down
11 changes: 10 additions & 1 deletion packages/workspace/src/generators/move/lib/update-imports.ts
Expand Up @@ -17,6 +17,7 @@ import { findNodes } from 'nx/src/utils/typescript';
import { NormalizedSchema } from '../schema';
import { normalizeSlashes } from './utils';
import { relative } from 'path';
import { parse } from 'jsonc-parser';

/**
* Updates all the imports in the workspace and modifies the tsconfig appropriately.
Expand All @@ -42,7 +43,15 @@ export function updateImports(
let tsConfig: any;
let fromPath: string;
if (tree.exists(tsConfigPath)) {
tsConfig = JSON.parse(tree.read(tsConfigPath).toString('utf-8'));
const tsConfigRawContents = tree.read(tsConfigPath).toString('utf-8');
tsConfig = (() => {
try {
return JSON.parse(tsConfigRawContents);
} catch {
return parse(tsConfigRawContents);
}
})();

fromPath = Object.keys(tsConfig.compilerOptions.paths).find((path) =>
tsConfig.compilerOptions.paths[path].some((x) =>
x.startsWith(project.sourceRoot)
Expand Down

0 comments on commit fc4fe92

Please sign in to comment.