barrelize 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,6 +16,13 @@ Barrelize simplifies module exports by creating clean, centralized `index.js` or
16
16
  - **Customizable**: Configure file patterns, ignore specific files, or customize export styles (named, default, or both).
17
17
  - **Recursive**: Optionally generate barrels for nested directories.
18
18
  - **CLI & API**: Use via command line for quick setups or integrate programmatically in your build scripts.
19
+ - **Smart Export Control**: Fine-grained control over what gets exported and how:
20
+ - Include/exclude specific members using string or regex patterns
21
+ - Map member names to custom export names
22
+ - Automatic type-only exports detection
23
+ - Support for asterisk (\*) exports when appropriate
24
+ - **Flexible Path Handling**: Replace patterns in export paths using string or regular expressions
25
+ - **Customizable Formatting**: Control bracket spacing, quotes, semicolons, and newlines
19
26
 
20
27
  ### Why Use Barrelize?
21
28
 
@@ -76,31 +83,50 @@ Create a `.barrelize` file in your project root. The configuration file uses JSO
76
83
  ```jsonc
77
84
  {
78
85
  "$schema": "node_modules/barrelize/schema.json",
79
- // Global settings (can be overridden per directory)
86
+ // Global formatting settings
87
+ "bracketSpacing": true, // Add spaces between brackets in exports (default: true)
80
88
  "singleQuote": true, // Use single quotes for exports (default: true)
81
89
  "semi": true, // Add semicolons after exports (default: true)
82
90
  "insertFinalNewline": true, // Add newline at end of file (default: true)
83
- // Configure multiple barrels to generate barrels for
91
+
92
+ // Configure multiple barrels
84
93
  "barrels": [
85
94
  {
95
+ // Root directory to start from (default: "")
96
+ "root": "src",
86
97
  // Name of the index file (default: "index.ts")
87
98
  "name": "index.ts",
88
- // Root directory to start from (default: "")
89
- "path": "src",
90
99
  // Files to include in the barrel (default: ["**/*.ts"])
91
- "include": ["**/*.ts", "**/*.tsx"],
100
+ "include": ["**/*.ts"],
92
101
  // Files to exclude from the barrel (default: [])
93
- "exclude": ["**/*.test.ts", "**/*.spec.ts"],
102
+ "exclude": ["**/*.test.ts"],
94
103
  // Optional ordering of exports (default: [])
95
104
  "order": ["types", "constants", "utils"],
96
- // Optional string replacements in export paths
97
- "replace": [
98
- {
99
- "find": ".ts$",
100
- "replacement": ""
105
+ // String/regex patterns to find and replace in export paths
106
+ "replace": {
107
+ "/\\.ts$/": "" // Remove .ts extension from paths
108
+ },
109
+ // Export configuration for different file patterns
110
+ "exports": {
111
+ "**/*.ts": {
112
+ // Include specific members (default: [])
113
+ "includeMembers": ["MyClass", "/^.*Service$/"],
114
+ // Exclude specific members (default: [])
115
+ "excludeMembers": ["internal", "/^_.*$/"],
116
+ // Map member patterns to export names
117
+ "map": {
118
+ "/^.+Util$/": "util",
119
+ "default": "lib",
120
+ "*": "services"
121
+ },
122
+ // Use * export when all members are exported (default: true)
123
+ "asteriskIfAllExported": true,
124
+ // Add 'type' prefix for type-only exports (default: true)
125
+ "typePrefixIfPossible": true
101
126
  }
102
- ],
103
- // Override global settings per directory if needed
127
+ },
128
+ // Override global formatting settings per barrel
129
+ "bracketSpacing": true,
104
130
  "singleQuote": true,
105
131
  "semi": true,
106
132
  "insertFinalNewline": true