$ yarn add --dev ts-morph
- create
organize_imports.js
// organize_imports.js
const path = require('path');
const tsm = require('ts-morph');
const rootAbsolutePath = path.resolve(__dirname, '../');
const targetDirectories = ['scripts', 'src'];
function organizeImports() {
const project = new tsm.Project();
targetDirectories.forEach(dir => {
project.addSourceFilesAtPaths(`${rootAbsolutePath}/${dir}/**/*.ts`);
});
const sourceFiles = project.getSourceFiles(); // you can filter files by project.getSourceFiles(<glob-pattern>);
sourceFiles.forEach(sourceFile => {
sourceFile.organizeImports();
});
project.saveSync();
}
organizeImports();
// package.json
{
...
"scripts": {
...
"organize-imports": "node organize_imports.js",
"postorganize-imports": "prettier --write './**/*.ts'",
...
},
...
}
$ yarn organize-imports