All Projects → dsherret → barrel-maintainer

dsherret / barrel-maintainer

Licence: MIT License
Automated real-time maintenance of barrels in JavaScript and TypeScript.

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Barrel Maintainer

npm version

Automatically maintains barrels in real-time.

Automated real-time barrel maintenance

Video Overview

Installation

npm install -g barrel-maintainer

Usage

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)

Ignoring Files

Add a /* barrel:ignore */ statement to the file:

/* barrel:ignore */
export function log(message: string) {
    console.log(message);
}

Exporting a Subset of a File's Exports

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.

Api

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();

About

This project uses ts-morph to navigate and manipulate source code.

Disclaimer

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!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].