A powerful CLI tool for weaving files together with advanced pattern matching capabilities, featuring smart import following, content minification, visual progress and tree view of processed files.
Installation β’ Usage β’ Examples β’ Contributing
- π Regex Pattern Matching: Filter files using regular expressions
- π« Exclusion Patterns: Ignore files that match specific patterns
- π Directory Support: Process files from any directory
- π Smart Import Following: Follow imports from multiple entry files automatically
- π File Headers: Option to include original filenames in the output
- π― Flexible Output: Specify custom output location and filename
- π³ Tree View: Visual representation of processed files with optional inclusion in output
- π Progress Bar: Real-time processing visualization
- π¨ Colored Output: Enhanced readability with color-coded messages
- π Custom Prompts: Add custom prompts to the output file
- ποΈ Directory Tree: Include directory structure in the output file
- β‘ Content Minification: Aggressive minification by default with customizable levels
- π Compression Statistics: View before/after file size statistics
- π Multi-Entry Support: Process multiple entry files simultaneously
- ποΈ Depth Control: Control how deep to follow import chains
npm install -g fileweaver
fileweaver [options]
Option | Description | Default |
---|---|---|
-r, --regex <pattern> |
Regex pattern to match files | - |
-ir, --ignoreregex <pattern> |
Regex pattern to ignore files | - |
-d, --directory <path> |
Directory path | Current directory |
-f, --follow-imports <files...> |
Follow imports from entry files (multiple files supported) | - |
--max-depth <number> |
Maximum depth for following imports | Unlimited |
-h, --headers |
Add file headers to content | false |
-o, --output <file> |
Output file name | output.txt |
-t, --tree |
Include directory tree in output file | false |
-p, --prompt <text> |
Add custom prompt to output file | - |
-m, --minify [level] |
Minify content (light|medium|aggressive) | aggressive |
--stats |
Show compression statistics | false |
--version |
Show version number | - |
--help |
Show help | - |
Follow imports from a single entry file:
fileweaver -f src/main.js -o bundle.js
Follow imports from multiple entry files:
fileweaver -f src/main.js src/app.js src/utils/index.js -o combined.js
With depth control and statistics:
fileweaver -f src/main.js --max-depth 5 --stats -o bundle.js
fileweaver -d . -r "\.js$" -t true -o combined.js
This will include a tree view in the output file:
==================================================
Directory Tree:
==================================================
βββ src
β βββ index.js
β βββ utils
β βββ helper.js
β βββ validator.js
βββ index.js
Aggressive minification (default):
fileweaver -f src/main.js -o minified.js
Custom minification level:
fileweaver -f src/main.js -m light -o bundle.js
fileweaver -d ./src -r "\.js$" -m medium -o bundle.js
With compression statistics:
fileweaver -f src/main.js --stats -o bundle.js
Output will show:
Compression Statistics:
Original size: 45,821 bytes
Minified size: 31,247 bytes
Reduction: 14,574 bytes (31.8%)
fileweaver -r "\.md$" -p "Process these markdown files for documentation" -o docs.md
Output will include:
==================================================
Prompt:
==================================================
Process these markdown files for documentation
fileweaver -d ./src -r "\.(js|ts)$" -h true -t true -p "Review this code" -m medium -o bundle.js
This will:
- Process all .js and .ts files
- Add headers for each file
- Include the directory tree
- Add the specified prompt
- Use medium minification
- Save everything to bundle.js
Process React application with TypeScript:
fileweaver -f src/App.tsx src/index.tsx --max-depth 10 --stats -h true -o react-bundle.js
Process multiple library entry points:
fileweaver -f lib/index.js lib/utils.js lib/components/index.js -m aggressive --stats -o library.js
fileweaver -d ./src -r "\.(js|ts)$" -h true -m light -o bundle.js
Output tree:
Files to be processed:
βββ src
βββ components
β βββ Button.ts
β βββ Input.js
βββ utils
βββ helpers.js
βββ types.ts
fileweaver -d . -r "\.js$" -ir "node_modules|dist|test" -m aggressive -o prod.js
Tree view:
Files to be processed:
βββ src
β βββ main.js
β βββ config.js
βββ index.js
The -h
flag adds file headers to the output:
==================================================
File: src/main.js
==================================================
// Minified main file content here...
==================================================
File: src/config.js
==================================================
// Minified config file content here...
Bundle an entire project following all imports with statistics:
fileweaver -f src/index.js -h true -t true --stats -p "Complete project bundle" -o project-bundle.js
Process multiple library entry points with controlled depth:
fileweaver -f lib/core.js lib/plugins.js lib/utils.js --max-depth 3 -m aggressive --stats -o library.min.js
Process files in nested directories, include tree structure, and add a processing prompt:
fileweaver -d ./project -r "\.css$" -ir "vendor|temp" -t true -p "Combine all CSS files" -m medium -o styles.css
fileweaver -r "\.(html|ejs)$" -ir "temp_|draft_" -h true -t true -m light -o templates.html
- Multi-Entry Import Following: Support for multiple entry files with
-f
- Aggressive Minification: Now enabled by default for better compression
- Compression Statistics: View file size reduction with
--stats
- Depth Control: Control import following depth with
--max-depth
- Improved Error Handling: Better handling of missing or invalid entry files
- Enhanced Progress Display: More detailed processing information
# Bundle React components with their dependencies
fileweaver -f src/components/App.jsx src/components/Layout.jsx --stats -o components.js
# Process CSS with imports
fileweaver -f src/styles/main.css --max-depth 5 -m medium -o bundle.css
# Bundle Node.js modules
fileweaver -f src/server.js src/routes/index.js --max-depth 8 --stats -o server-bundle.js
# Process utility libraries
fileweaver -f lib/utils.js lib/helpers.js lib/validators.js -m aggressive -o utils.min.js
# Combine markdown files with tree structure
fileweaver -d ./docs -r "\.md$" -t true -p "Complete documentation" -m light -o README.md
Contributions are welcome! Feel free to:
- Fork the repository
- Create your feature branch:
git checkout -b feature/amazing-feature
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions, please open an issue on GitHub.