ts-morph
Getting Source Files
After source files are added, you will need to get them in order to navigate or make changes.
All
Get all the source files:
const sourceFiles = project.getSourceFiles();
Or filter by glob:
// single
const testSourceFiles = project.getSourceFiles("src/test/**/*.ts");
// or multiple
const nonTestSourceFiles = project.getSourceFiles([
"src/**/*.ts",
"!src/test/**/*.ts",
]);
Note that the path resolution and matching is done relative to the current working directory.
For example, if you load a project from another directory...
const project = new Project({
tsConfigFilePath: `/someDirectory/notCurrent/tsconfig.json`,
});
...to match a file from that directory you need to specify a glob that matches based on the current working directory or absolute path...
const sourceFile = project.getSourceFiles(`/someDirectory/notCurrent/**/config/index.ts`);
By file path
Will return the first source file that matches the end of the provided file path:
const personFile = project.getSourceFile("Models/Person.ts");
By condition
Will return the first source file that matches the provided condition:
const fileWithFiveClasses = project.getSourceFile(f => f.getClasses().length === 5);