Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Automatically create TypeScript barrels for your entire code base.
Barrels are files that rollup exports from several modules into a single convenient module
typically named index.ts
. They tend to help simplify large blocks of import statements at the top
of files and help to group up related functionality.
A barrel file looks like this:
export * from "./DropDown";
export * from "./TextBox";
export * from "./CheckBox";
export * from "./DateTimePicker";
export * from "./Slider";
It can help you go from messy imports like this:
import {DropDown} from "./src/controls/DropDown";
import {TextBox} from "./src/controls/TextBox";
import {CheckBox} from "./src/controls/CheckBox";
import {DateTimePicker} from "./src/controls/DateTimePicker";
import {Slider} from "./src/controls/Slider";
...to something tidier like this:
import {DropDown, TextBox, CheckBox, DateTimePicker, Slider} from "./src/controls";
...or even this:
import * as Controls from "./src/controls/index";
To install Barrelsby:
npm install --save-dev barrelsby
To run barrelsby first add a script to the package.json
file:
{
"scripts": {
"generate-barrels": "barrelsby --delete"
}
}
You can now generate barrels:
npm run generate-barrels
Barrelsby accepts a number of options to help refine how your barrels are created. These options can be configured from the command line or using a configuration file.
-c [path]
or --config [path]
Specifies the location of the barrelsby configuration file. This file must be a .json
file. You
can include any of the configuration options using their long name.
-d [path...]
or --directory [path...]
Specifies a list of root directories where barrels will be created from. Uses the current directory by default.
Note: This is backwards compatible with previous versions. Existing configuration files will be parsed correctly. The following two json files will behave identically.
{
"directory": "./src"
}
{
"directory": ["./src"]
}
-D
or --delete
Deletes any existing barrels encountered by barrelsby. Disabled by default.
-e [regex...]
or --exclude [regex...]
Excludes any files whose paths match any of the specified regular expressions.
-E
or --exportDefault
Also export the default export of the file. Currently works only with the flat
mode.
export * from "./barrel";
export { default as barrel } from "./barrel";
-F
or --fullPathname
exportDefault with full pathname to create distinct name. Currently works only with the flat
mode and exportDefault flag.
export * from "./example/of/the/path";
export { default as exampleOfThePath } from "./example/of/the/path";
-h
or --help
Displays help information on the command line arguments that barrelsby accepts.
-i [regex...]
or --include [regex...]
Only include files whose paths match any of the specified regular expressions.
-l [mode]
or --location [mode]
The mode that barrelsby should use to determine where which directories to create barrels in. Defaulted to top.
top
only creates a barrel in the target directory.below
creates a barrel in every directory just below the target directory.all
creates a barrel in every directory below (and including) the target directory.replace
only creates barrels in directories where one already existed.branch
creates a barrel in every directory that contains other directories.-L
or --local
Enable this to prevent barrels including modules that exist in the same directory, rather than recursively searching child directories.
-n [name]
or --name [name]
Specifies the name to use for creating new barrels (and identifying old ones). .ts
wil be
appended if not included in the name. Barrels names will be defaulted to index.ts
.
-s [mode]
or --structure [mode]
The structure that barrelsby should create inside the barrels. Defaulted to flat.
flat
Exports modules without any nesting.
export * from "./barrel";
export * from "./index";
export * from "./directory2/script";
export * from "./directory2/directory4/deeplyNested";
export * from "./directory3/program";
filesystem
Exports modules as a nested structure that matches the file system directories.
import * as barrelts from "./barrel";
import * as directory2directory4deeplyNestedts from "./directory2/directory4/deeplyNested";
import * as directory2scriptts from "./directory2/script";
import * as directory3programts from "./directory3/program";
import * as indexts from "./index";
export {barrelts as barrel};
export const directory2 = {
directory4: {
deeplyNested: directory2directory4deeplyNestedts,
},
script: directory2scriptts,
};
export const directory3 = {
program: directory3programts,
};
export {indexts as index};
-q
or --singleQuotes
Use 'single quotes' in the generated barrel files instead of the default "double quotes".
-S
or --noSemicolon
Omit semicolons from the end of lines in the generated barrel files.
-H
or --noHeader
Omit adding a header comment to the top of the barrel file.
-v
or --version
Display the barrelsby version number.
-V
or --verbose
Display additional debug information.
Requires node v6.0.0 or greater for ES6 syntax.
See CONTRIBUTING.md
FAQs
Automatic TypeScript barrels for your entire code base
The npm package barrelsby receives a total of 54,832 weekly downloads. As such, barrelsby popularity was classified as popular.
We found that barrelsby demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.