nx/packages/angular/src/generators/application/lib/update-editor-tsconfig.ts
2022-05-16 13:09:24 +01:00

54 lines
1.3 KiB
TypeScript

import type { Tree } from '@nrwl/devkit';
import type { NormalizedSchema } from './normalized-schema';
import { joinPathFragments, readJson, updateJson } from '@nrwl/devkit';
interface TsConfig {
compilerOptions: { types: string[] };
}
function getCompilerOptionsTypes(tsConfig: TsConfig): string[] {
return tsConfig?.compilerOptions?.types ?? [];
}
export function updateEditorTsConfig(tree: Tree, options: NormalizedSchema) {
const types = getCompilerOptionsTypes(
readJson<TsConfig>(
tree,
joinPathFragments(options.appProjectRoot, 'tsconfig.app.json')
)
);
if (options.unitTestRunner !== 'none') {
types.push(
...getCompilerOptionsTypes(
readJson<TsConfig>(
tree,
joinPathFragments(options.appProjectRoot, 'tsconfig.spec.json')
)
)
);
}
updateJson(
tree,
joinPathFragments(options.appProjectRoot, 'tsconfig.editor.json'),
(json) => {
json.compilerOptions.types = types;
return json;
}
);
// This should be the last tsconfig references so it's not in the template
updateJson(
tree,
joinPathFragments(options.appProjectRoot, 'tsconfig.json'),
(json) => {
json.references.push({
path: './tsconfig.editor.json',
});
return json;
}
);
}