nquickdev
v1.0.3
Published
A professional-grade file watcher and development server for TypeScript/JavaScript applications. High-performance alternative to nodemon.
Maintainers
Readme
Nehonix QuickDev
A professional-grade file watcher and development server for TypeScript/JavaScript applications. This tool is designed as a high-performance alternative to nodemon, specifically optimized for modern Node.js/TypeScript applications with advanced features not found in other reloaders.
Designed for fortify2-js server but can be used in other applications
Features
Core Capabilities
- High-performance file watching and reloading
- Intelligent TypeScript/JavaScript detection and handling
- Advanced project configuration detection
- Sophisticated file system monitoring
- Production-grade process management
- Professional CLI interface with color-coded output
Advanced Features
Smart Process Management
- Graceful shutdown with configurable timeout
- Process restart statistics and history
- Maximum restart limits with auto-reset
- Configurable restart delay
- Environment variable preservation
Advanced File Watching
- File hashing for precise change detection
- Batch processing of file changes
- Polling and filesystem event support
- Symlink following capability
- Custom ignore patterns via file
Performance Optimization
- Parallel file processing
- Memory usage monitoring and limits
- File size restrictions
- Efficient batch change processing
- Smart event debouncing
Health Monitoring
- Process health checks
- Memory usage tracking
- Restart statistics
- Error tracking and history
- Performance metrics
Installation
Option 1: Install via npm (Recommended)
npm install -g nquickdevOption 2: Install via Go
- Make sure you have Go installed (version 1.21 or higher)
- Install using Go:
Or build from source:go install github.com/nehonix/quickdev@latestgit clone https://github.com/nehonix/quickdev.git cd quickdev go build -o quickdev
Configuration
quickdev supports multiple ways to configure its behavior:
1. Configuration File
Create a quickdev.config.json (or .quickdevrc.json) in your project root:
{
"script": "src/server.ts",
"watch": ["src", "config"],
"ignore": ["node_modules", "dist", "coverage"],
"extensions": [".ts", ".js", ".jsx", ".tsx"],
"gracefulShutdown": true,
"gracefulShutdownTimeout": 5,
"maxRestarts": 5,
"resetRestartsAfter": 60000,
"restartDelay": 100,
"batchChanges": true,
"batchTimeout": 300,
"enableHashing": true,
"usePolling": false,
"pollingInterval": 100,
"followSymlinks": false,
"watchDotFiles": false,
"ignoreFile": ".quickdevignore",
"parallelProcessing": true,
"memoryLimit": 500,
"maxFileSize": 10,
"excludeEmptyFiles": true,
"debounceMs": 250,
"healthCheck": true,
"healthCheckInterval": 30,
"clearScreen": true,
"typescriptRunner": "tsx",
"tsNodeFlags": "--esm"
}Configuration Options
Core Settings
script- Path to the script to run (required)watch- Directories to watch, array of pathsignore- Directories to ignore, array of pathsextensions- File extensions to watch
Process Management
gracefulShutdown- Enable graceful shutdown (default: true)gracefulShutdownTimeout- Graceful shutdown timeout in seconds (default: 5)maxRestarts- Maximum number of restarts (default: 5)resetRestartsAfter- Reset restart count after X milliseconds (default: 60000)restartDelay- Delay before restart in milliseconds (default: 100)
File Watching
batchChanges- Enable batch processing of changes (default: true)batchTimeout- Batch timeout in milliseconds (default: 300)enableHashing- Enable file hashing for precise change detection (default: true)usePolling- Use polling instead of filesystem events (default: false)pollingInterval- Polling interval in milliseconds (default: 100)followSymlinks- Follow symbolic links (default: false)watchDotFiles- Watch dot files (default: false)ignoreFile- Path to custom ignore file
Performance
parallelProcessing- Enable parallel processing (default: true)memoryLimit- Memory limit in MB (default: 500)maxFileSize- Maximum file size in MB (default: 10)excludeEmptyFiles- Exclude empty files (default: true)debounceMs- Debounce time in milliseconds (default: 250)
Monitoring
healthCheck- Enable health checking (default: true)healthCheckInterval- Health check interval in seconds (default: 30)clearScreen- Clear screen on restart (default: true)
TypeScript Settings (leave blank to use default runner (recommanded))
typescriptRunner- TypeScript execution engine to use ("tsx" or "ts-node", default: tries "tsx" first, then "ts-node")tsNodeFlags- Additional flags for the TypeScript runner (default: "--esm" for ts-node)
2. Ignore File
Create a .quickdevignore file to specify patterns to ignore:
# Comments are supported
*.log
*.tmp
temp/
**/*.test.js
coverage/
dist/
build/
.git/3. Command Line Arguments
All configuration options can be overridden via command line arguments:
quickdev -script server.js \
--watch="src,config" \
--ignore="node_modules,dist" \
--ext=".ts,.js"Command line arguments take precedence over configuration file settings.
Configuration Priority
quickdev uses the following priority order when loading configuration:
- Command line arguments (highest priority)
quickdev.config.jsonor.quickdevrc.json.quickdevignorefile- Default values (lowest priority)
TypeScript Support
quickdev provides robust TypeScript support with configurable execution options:
TypeScript Runner Selection
You can specify your preferred TypeScript runner in the config:
{
"typescriptRunner": "tsx", // or "ts-node"
"tsNodeFlags": "--esm" // or any other flags you need
}The runner selection follows this order:
- Uses the specified
typescriptRunnerif configured - Falls back to
tsxif available - Falls back to
ts-nodeif available - Fails if no TypeScript runner is found
TypeScript Flags
- For
tsx: Pass any additional flags viatsNodeFlags - For
ts-node: Default flags are--esm, can be overridden viatsNodeFlags
Example with custom flags:
{
"typescriptRunner": "ts-node",
"tsNodeFlags": "--esm --transpileOnly --compilerOptions '{\"module\":\"ESNext\"}'"
}Usage Examples
Basic Usage
quickdev -script your-script.jsAdvanced Usage
quickdev -script server.js \
--watch="src,config" \
--ignore="node_modules,dist,coverage" \
--ext=".ts,.js,.jsx,.tsx" \
--batch=true \
--hash=true \
--health=true \
--graceful=trueCommand Line Options
Core Options
-script- Path to the script to run (required)-watch- Directories to watch, comma-separated (default: ".")-ignore- Directories to ignore, comma-separated (default: "node_modules,dist,.git")-ext- File extensions to watch (default: ".js,.ts,.jsx,.tsx")
Process Management
-graceful- Enable graceful shutdown (default: true)-graceful-timeout- Graceful shutdown timeout in seconds (default: 5)-max-restarts- Maximum number of restarts (default: 0 = unlimited)-reset-after- Reset restart count after X milliseconds (default: 60000)-restart-delay- Delay before restart in milliseconds (default: 100)
File Watching
-batch- Enable batch processing of changes (default: true)-batch-timeout- Batch timeout in milliseconds (default: 300)-hash- Enable file hashing for precise change detection (default: true)-polling- Use polling instead of filesystem events (default: false)-polling-interval- Polling interval in milliseconds (default: 100)-follow-symlinks- Follow symbolic links (default: false)-watch-dot- Watch dot files (default: false)-ignore-file- Path to custom ignore file
Performance
-parallel- Enable parallel processing (default: true)-memory- Memory limit in MB (default: 500)-max-size- Maximum file size in MB (default: 10)-exclude-empty- Exclude empty files (default: true)-debounce- Debounce time in milliseconds (default: 250)
Monitoring
-health- Enable health checking (default: true)-health-interval- Health check interval in seconds (default: 30)-clear- Clear screen on restart (default: true)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details.
