Automatically maintains barrels in real-time.
npm install -g barrel-maintainer
barrel-maintainer [options] [path]
Options:
--includeRootDir
- Create a barrel in the root directory.- Quote type (specify one)
- Defaults to the quote type used in the first found import declaration in your project.
--singleQuotes
- Use single quotes.--doubleQuotes
- Use double quotes.
- File extension for barrel (specify one)
- Defaults to whichever file type your project has more of.
--ts
- Create index.ts files.--js
- Create index.js files.
- New lines (specify one)
--crlf
- Use carriage return line feed newlines (default on windows)--lf
- Use line feed newlines (default elsewhere)
Add a /* barrel:ignore */
statement to the file:
/* barrel:ignore */
export function log(message: string) {
console.log(message);
}
Given the following setup:
// classes.js
export ClassA {}
export ClassB {}
// index.js
export * from "./classes";
If you want the barrel to export a subset of the exports from classes.js, then edit the barrel to say so:
// index.js
export { ClassA } from "./classes";
These kind of changes won't be overwritten by the code manipulation.
import BarrelMaintainer from "barrel-maintainer";
const maintainer = new BarrelMaintainer("myProject/src/", {
includeRootDir: false,
fileExtension: "js", // or "ts" (extension for barrel)
quoteType: "'", // or "\""
newLineType: "\r\n", // or "\n"
});
await maintainer.updateDirectory("myProject/src/subdir");
const watcher = maintainer.watchDirectory("myProject/src");
// then later (if necessary)
watcher.stop();
This project uses ts-morph to navigate and manipulate source code.
This library will modify and delete source code. I am not responsible for any of its modifications or deletions!
Always use version control to verify and to be able to easily revert the changes it makes!