TypeScript Barrel Generator
❓ Why
Working with TypeScript? Want to make your TypeScript imports cleaner? Use this extension to easily export all modules to a barrel index.ts
file.
Info: A "barrel" is a way to rollup exports from several modules into a single convenient module. The barrel itself is a module file that re-exports selected exports of other modules.
Example:
// folder/index.ts
export * from "./foo";
export * from "./bar";
✨ Functionalities
The extension allows you to manually or automatically export the modules to a barrel file. For the automatic way, you first have to create a listener for the folder for which you want to create the automated export.
In both the manual and automatic way, an index.ts
file will be created with a reference to all the folder/files in the current directory.
Info: If there are folders/files you want to get excluded from the export, you can do this by right-clicking on the folder/file and clicking on the TypeScript: Exclude folder/file from export
.
Create from the current file directory
By using the Barrel Generator: Export all modules from the current file directory
command, you can create a barrel file from the current file path its directory.
Info: If you want, you can add your own keybinding to this command to make it easier to trigger.
Manual creation
Module creation by listener
Info: When a folder listener is added, it will be visible in the TypeScript - Export Listeners
view. By clicking on the folder names, you will automatically open the index.ts
file.
Removing a listener
Folder listeners can be removed by right-clicking on the folder name in the TypeScript - Export View
.
Excluding folder(s)/file(s)
If there are specific folders or files you want to exclude from your module, you can do this by right-clicking on the file, and click on the TypeScript: Exclude folder/file from export
menu action.
Include previously excluded folder(s)/file(s)
When you already excluded a folder or file, and want to include these again into your module export, you can do this from the TypeScript - Export View
. Under the Excluded folders & files
section, right-click on the folder or file to include and click Include to export
.
Customizing the Barrel File Name
By default, the barrel file is named index.ts
. You can customize this name using the exportall.config.barrelName
setting in your VS Code settings. For example:
"exportall.config.barrelName": "barrel.ts"
This will generate a barrel file with the specified name instead of index.ts.
Recursive Folder Search
You can enable recursive searching of subdirectories for TypeScript files using the exportall.config.recursive
setting. This is useful when you have a folder structure like:
components/
button/
button.tsx
button.module.scss
textBox/
textBox.tsx
textBox.module.scss
To export TypeScript files from all subdirectories without requiring index files in each subfolder:
"exportall.config.recursive": true
When enabled, running the export command on the components
folder will create:
// components/index.ts
export * from './button/button';
export * from './textBox/textBox';
⚙️ Configuration / Settings
The extension makes use of the following settings:
Setting |
Description |
Type |
Default |
exportall.config.namedExports |
Specifies if you want to use named exports in the barrel file. |
boolean |
false |
exportall.config.includeFoldersToExport |
Specifies if folder (which contain a index.ts file) will also be included in the module export. |
boolean |
true |
exportall.config.exclude |
Specify which files you want to exclude the index.ts file. Works on the whole filename or part of the filename. |
string[] |
['.test.', '.spec.'] |
exportall.config.folderListener |
Specify the relative paths for the folder listeners. This will make it possible to automatically generate the module export once a file gets added/updated/removed within the specified folder.
To listen to sub-folders, you can include the directory wildcard ** to the path. |
string[] |
[] |
exportall.config.relExclusion |
Specify the relative folder/file paths to exclude from the export. |
string[] |
[] |
exportall.config.semis |
Specify if you want to enable/disable the usage of semis in the barrel file. |
boolean |
true |
exportall.config.quote |
Specify the character that you want to use as the quoting character; typically ' or " . |
string |
' |
exportall.config.message |
Specify the message that you want to use in the generated barrel file. The message will be added at the top. |
string |
|
exportall.config.exportFileExtension |
Specify the file extension to append to the exported files. Example: js , ts , null (no extension). |
string | null |
null |
exportall.config.barrelName |
Specify the name of the barrel file. |
string |
index.ts |
exportall.config.exportFullPath |
Specify if you want to use the full path in the export statement. This will be applied to the generated barrel file. |
boolean |
false |
exportall.config.recursive |
Specify if you want to recursively search subdirectories for TypeScript files to export. When enabled, all TypeScript files in subdirectories will be included without requiring index files in each subfolder. |
boolean |
false |
💪 Contribute
Experiencing any issues, or got feedback to share? Feel free to raise this in the issue list of the repo: issues.
🔑 License
MIT