ngx-unused
Version:
Detect unused classes (components, pipes, services and directives) defined in Angular workspace.
27 lines (26 loc) • 1 kB
JavaScript
import { existsSync } from 'fs';
import { globSync } from 'glob';
import path from 'path';
import { Project } from 'ts-morph';
export function createProject({ tsConfigFilePath, sourceRoots, }) {
const project = new Project({
tsConfigFilePath,
skipAddingFilesFromTsConfig: true,
skipFileDependencyResolution: true,
skipLoadingLibFiles: true,
});
project.addSourceFilesAtPaths(getSourceFiles(sourceRoots));
return project;
}
function getSourceFiles(sourceRoots) {
const existingDirectories = sourceRoots.filter(directory => existsSync(directory));
const includePatterns = existingDirectories.map(directory => `${path.resolve(directory)}/**/*.ts`);
const excludePatterns = existingDirectories.flatMap(directory => [
`${directory}/**/node_modules/**`,
`${directory}/**/*.spec.ts`,
`${directory}/**/*.d.ts`,
]);
return globSync(includePatterns, {
ignore: [...excludePatterns, 'node_modules/**'],
});
}