fileweaver
v1.10.0
Published
A CLI tool to weave files together based on regex patterns
Maintainers
Readme
📁 FileWeaver
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
✨ Features
- 🔍 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
🚀 Installation
npm install -g fileweaver🔧 Usage
fileweaver [options]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 | - |
📋 Examples
Smart Import Following (New!)
Follow imports from a single entry file:
fileweaver -f src/main.js -o bundle.jsFollow imports from multiple entry files:
fileweaver -f src/main.js src/app.js src/utils/index.js -o combined.jsWith depth control and statistics:
fileweaver -f src/main.js --max-depth 5 --stats -o bundle.jsBasic File Concatenation with Tree
fileweaver -d . -r "\.js$" -t true -o combined.jsThis will include a tree view in the output file:
==================================================
Directory Tree:
==================================================
├── src
│ ├── index.js
│ └── utils
│ ├── helper.js
│ └── validator.js
└── index.jsContent Minification (New!)
Aggressive minification (default):
fileweaver -f src/main.js -o minified.jsCustom minification level:
fileweaver -f src/main.js -m light -o bundle.js
fileweaver -d ./src -r "\.js$" -m medium -o bundle.jsWith compression statistics:
fileweaver -f src/main.js --stats -o bundle.jsOutput will show:
Compression Statistics:
Original size: 45,821 bytes
Minified size: 31,247 bytes
Reduction: 14,574 bytes (31.8%)Add Custom Prompt
fileweaver -r "\.md$" -p "Process these markdown files for documentation" -o docs.mdOutput will include:
==================================================
Prompt:
==================================================
Process these markdown files for documentationCombine Multiple Features
fileweaver -d ./src -r "\.(js|ts)$" -h true -t true -p "Review this code" -m medium -o bundle.jsThis 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
Advanced Import Following
Process React application with TypeScript:
fileweaver -f src/App.tsx src/index.tsx --max-depth 10 --stats -h true -o react-bundle.jsProcess multiple library entry points:
fileweaver -f lib/index.js lib/utils.js lib/components/index.js -m aggressive --stats -o library.jsProcess Multiple File Types
fileweaver -d ./src -r "\.(js|ts)$" -h true -m light -o bundle.jsOutput tree:
Files to be processed:
└── src
├── components
│ ├── Button.ts
│ └── Input.js
└── utils
├── helpers.js
└── types.tsExclude Multiple Patterns
fileweaver -d . -r "\.js$" -ir "node_modules|dist|test" -m aggressive -o prod.jsTree view:
Files to be processed:
├── src
│ ├── main.js
│ └── config.js
└── index.jsWith Headers in Output
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...🔍 Advanced Usage
Complete Project Bundle with Import Following
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.jsMulti-Entry Library Processing
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.jsNested Directories with Tree and Prompt
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.cssComplex Pattern Matching with Custom Output
fileweaver -r "\.(html|ejs)$" -ir "temp_|draft_" -h true -t true -m light -o templates.html🆕 What's New in v1.4.1
- 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
💡 Use Cases
Frontend Development
# 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.cssBackend Development
# 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.jsDocumentation
# Combine markdown files with tree structure
fileweaver -d ./docs -r "\.md$" -t true -p "Complete documentation" -m light -o README.md🤝 Contributing
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
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
🛟 Support
For support and questions, please open an issue on GitHub.
