1.3.0 ā€¢ Published 22 days ago

barrelgun v1.3.0

Weekly downloads
-
License
MIT
Repository
github
Last release
22 days ago

barrelgun

Generate your barrel files like a cowboy šŸ¤ 

npm version MIT license GitHub code size in bytes npm

Flexible NodeJS generator for barrel files (index.js) and more!

Usage

Create a config file barrelgun.config.js

/** @type {Array<import("barrelgun").BarrelgunConfigBarrel>} */
const barrels = [
		{
			path: "src/components/index.ts",
			files: "*.component.{ts,tsx}",
		},
		{
			path: "test/tests.spec.js",
			files: "**/*.spec.js",
			lineTemplate: (file) => `export {${file.replace(/[/.]/, '_')} from '${file}';`,
			fileTemplate: (files, lineTemplate: LineTemplate) =>
				`// Do not touch of you will be fired!			
${files.reverse().map(file => lineTemplate(file))}
// You have been warned!`,
		},
	];

module.exports = {barrels};

and run barrelgun

npx barrelgun shoot -c barrelgun.config.js

The following structure will be created

.
ā”œā”€ā”€ barrelgun.config.js
ā”œā”€ā”€ src
ā”‚   ā””ā”€ā”€ components
ā”‚       ā”œā”€ā”€ button.component.tsx
ā”‚       ā”œā”€ā”€ dialog.component.ts
ā”‚       ā””ā”€ā”€ index.js  <- this file is created
ā””ā”€ā”€ test
    ā”œā”€ā”€ ignore.js
    ā”œā”€ā”€ all.spec.js
    ā”œā”€ā”€ components
    ā”‚   ā””ā”€ā”€ button.spec.js
    ā””ā”€ā”€ tests.spec.js  <- this file is created

src/components/index.js now contains

// Generated by barrelgun. DO NOT EDIT

export * from './button.component.tsx';
export * from './dialog.component.ts';

src/components/index.js content is

// Do not touch of you will be fired!			
export {components_button_spec_js} from './components/button.spec.js';
export {all_spec_js} from './all.spec.js';
// You have been warned!

Features

  • Import files recursively with globs
  • Create all barrels at once with globs
  • Custom templates
  • Sort lines
  • Ignore empty files

Related projects

Inspired by

1.3.0

22 days ago

1.2.2

1 year ago

1.2.1

1 year ago

1.2.0

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.0

2 years ago