dino-env-cli
v1.0.4
Published
CLI tool to switch between development and production environment files
Readme
🦕 Dino Environment CLI
A simple CLI tool to quickly switch between development and production environment files with flexible configuration options.
Installation
Local Installation
npm install
npm linkGlobal Installation (if publishing to npm)
npm install -g dino-env-cliUsage
The CLI supports two modes: Configuration-based (recommended) and Direct command mode.
Configuration-based Mode (Recommended)
Create a dino-env.config.js file in your project root:
module.exports = {
environments: {
prod: {
src: 'E:/dinocollab/private/partner-admin-site/.env.production',
dest: '.env'
},
dev: {
src: 'E:/dinocollab/private/partner-admin-site/.env.development',
dest: '.env'
},
test: {
src: 'E:/dinocollab/private/partner-admin-site/.env.test',
dest: '.env'
}
}
}Then use simple commands:
# Switch to development environment
dino-env-cli dev
# Switch to production environment
dino-env-cli prod
# Switch to test environment
dino-env-cli testDirect Command Mode
Use flags to specify files directly:
# Copy with source flag
dino-env-cli --src ./config/.env.production
# Copy with custom destination
dino-env-cli --src ./config/.env.production --dest ./.env.local
# Use custom config file
dino-env-cli dev --config ./custom-config.jsLegacy Mode
For backward compatibility, the tool also supports default file names:
# Looks for .env.development.cli in current directory
dino-env-cli dev
# Looks for .env.production.cli in current directory
dino-env-cli prodCommand Syntax
dino-env-cli <env-name> # Use environment from config file
dino-env-cli --src <file> [--dest <file>] # Direct file copy
dino-env-cli <command> --config <path> # Use custom config fileArguments and Options
| Argument/Option | Description |
|----------------|-------------|
| <env-name> | Environment name from config (dev, prod, test, etc) |
| --src <file> | Source file path |
| --dest <file> | Destination file path (default: .env) |
| --config <path> | Path to config file (default: ./dino-env.config.js) |
| help | Show help information |
Configuration File
The dino-env.config.js file structure:
module.exports = {
environments: {
// Environment name: configuration
prod: {
src: "path/to/production.env",
dest: ".env"
},
dev: {
src: "path/to/development.env",
dest: ".env"
},
test: {
src: "path/to/test.env",
dest: ".env"
}
// Add more environments as needed
}
}Examples
Using Configuration File
# Create config file
$ cat > dino-env.config.js << EOF
module.exports = {
environments: {
dev: { src: './configs/.env.dev', dest: '.env' },
prod: { src: './configs/.env.prod', dest: '.env' }
}
}
EOF
# Switch environments
$ dino-env-cli dev
🚀 Using 'dev' environment from config file...
✅ Copied ./configs/.env.dev → .env
$ dino-env-cli prod
🚀 Using 'prod' environment from config file...
✅ Copied ./configs/.env.prod → .envUsing Direct Commands
# Direct file copy
$ dino-env-cli --src ./configs/.env.production
🚀 Copying environment file...
✅ Copied ./configs/.env.production → .env
# Custom destination
$ dino-env-cli --src ./configs/.env.dev --dest ./.env.local
🚀 Copying environment file...
✅ Copied ./configs/.env.dev → ./.env.localIntegration with package.json
Simplify your npm scripts:
{
"scripts": {
"env:dev": "dino-env-cli dev",
"env:prod": "dino-env-cli prod",
"env:test": "dino-env-cli test"
}
}Benefits
- ✅ Centralized Configuration: All environment paths in one config file
- ✅ Simple Commands: Just
dino-env-cli devinstead of long file paths - ✅ Flexible: Supports both config-based and direct command modes
- ✅ Backward Compatible: Works with existing setups using default file names
- ✅ Cross-platform: Works on Windows, macOS, and Linux
