Extended EJS CLI tool with directory processing and watch functionality.
- 🗂️ Directory Processing: Process all
.ejs
files in a directory recursively - 👀 Watch Mode: Automatically recompile templates when files change
- ⚡ Concurrent Processing: Multiple templates can be processed simultaneously
- 🔄 100% Compatible: Directly executes the official EJS CLI, ensuring perfect compatibility
npm install -g ejs-cli-extended
npm install ejs-cli-extended
When installed locally, you can run it with:
# Using npx
npx ejsc src:dist
# Using npm scripts
npm exec ejsc src:dist
# Or add to your package.json scripts
"scripts": {
"build": "ejsc src:dist"
}
Process a single EJS template file:
ejsc template.ejs -o output.html
ejsc template.ejs -f data.json -o output.html
Process all .ejs
files in a directory:
ejsc src:dist
ejsc templates:build -f config.json
Continuously watch for changes and recompile:
# Single file
ejsc template.ejs -o output.html --watch
# Directory
ejsc src:dist --watch
All standard EJS CLI options are supported. For complete documentation, see the official EJS CLI repository.
--watch
- Watch for changes and recompile automaticallyinput-dir:output-dir
- Process directory (replaces single file path)
# Process all .ejs files in 'templates' directory
# Output to 'dist' directory
ejsc templates:dist
# Use JSON data file for template variables
ejsc src:build -f data.json
# Watch for changes and auto-recompile
ejsc templates:dist --watch -f config.json
When using directory mode, the tool:
- Recursively finds all
.ejs
files in the input directory - Maintains the same directory structure in the output
- Converts
.ejs
extensions to.html
- Creates output directories as needed
Example:
src/
├── index.ejs → dist/index.html
├── pages/
│ ├── about.ejs → dist/pages/about.html
│ └── contact.ejs → dist/pages/contact.html
└── components/
└── header.ejs → dist/components/header.html
This tool directly executes the official EJS CLI, ensuring 100% compatibility. All EJS CLI features are supported, including:
- All command-line options and flags
- Data input via files, command line, or stdin pipe
- Template preprocessing and compilation
- Custom delimiters and configurations
# All these work exactly like the official EJS CLI
ejsc template.ejs -o output.html
ejsc template.ejs -f data.json -o output.html
echo '{"name": "World"}' | ejsc template.ejs -o output.html
ejsc template.ejs -m $ -p [ -c ] -o output.html
You can use this tool as a complete drop-in replacement for the official EJS CLI.
Contributions are welcome! Please feel free to submit a Pull Request.