Git Product home page Git Product logo

barrelbot's Introduction

🤖Barrelbot

The Automated barrel file manager

Recursively watches a folder and generates barrel files (What is a barrel file?)

  • Install globally, run anywhere you want
  • generates index.tsx files by default, use a flag for .ts, .js, .jsx

barrelbot

How to use

Install globally (or locally up to you)

npm i -g barrelbot

Then in your project, assuming you want to generate barrel files in /src:

barrelbot watch src

It ignores files that you would normally want to ignore based on . in the filename, e.g.:

  • two or more dots e.g. foo.stories.js or bar.spec.ts
  • starting with a dog e.g. .somedotfile

Option: --ext {js, jsx, ts, tsx}

By default barrelbot assumes you want to use and output a .tsx extension. you can configure this with a --extension or --ext flag:

barrelbot watch src --extension js

Option: --namespace {none, all, defaultOnly}

By default barrelbot assumes you export everything without a namespace, so it generates exports like:

// barrelbot watch myFolder
// index.js
export * from './foo';

However, many people understandably have different styles (open an issue if you have a strong opinion on what the default should be), so you can configure this with a --namespace or --n flag:

all:

// barrelbot watch myFolder --namespace all
// index.js
import * as foo from './foo';
export { foo };

defaultOnly:

// barrelbot watch myFolder --namespace defaultOnly
// index.js
export { default as foo } from './foo';

Visualizing what it does

Given a file structure like

- someFolder
- myWatchedFolder
  - components
    - Header
      - Logo.tsx
      - Title.tsx
      - Logo.test.tsx
    - Main.tsx
    - Button.tsx
    - Button.spec.ts
  - App.tsx
  - .somedotfile

When you run barrelbot watch myWatchedFolder, it results in:

- someFolder
- myWatchedFolder
  - components
    - Header
      - Logo.tsx
      - Title.tsx
      - Logo.test.tsx
      - index.tsx
    - Main.tsx
    - Button.tsx
    - Button.spec.ts
    - index.tsx
  - App.tsx
  - .somedotfile
  - index.tsx

while ignoring the *.test.tsx, *.spec.ts, and .somedotfile.

Tip!

Before running barrelbot, I advise committing your project to git first.

This way, if you run the bot and find barrel files that aren't generated to your liking, you can run git clean -f to remove them.

Plan

  • interactive fix mode

currently the bot bails out whenever a noncompliant index.ts file is found. we can add ignore and skip semantics as well as an interactive fix method for easier onboarding.

Inspiration

https://github.com/bencoveney/barrelsby

how it differs:

  • watch mode by default
  • barrel file only for the files at every directory level, not one megafile

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.