UNPKG

cross-env-cmd

Version:

A merge of cross-env and env-cmd - Load environment variables from files and execute commands

213 lines (160 loc) 5.07 kB
# cross-env-cmd Un outil qui combine les fonctionnalités de `cross-env` et `env-cmd` pour charger des variables d'environnement depuis des fichiers et exécuter des commandes. ## Fonctionnalités - ✅ **TypeScript** - Écrit en TypeScript avec typage strict - ✅ Chargement de variables d'environnement depuis des fichiers `.env` - ✅ Configuration d'environnements multiples via un fichier `.rc` (format env-cmd) - ✅ Variables d'environnement en ligne de commande - ✅ Fusion intelligente des variables (priorité : ligne de commande > fichiers -f > .rc) - ✅ Support des formats JSON et JavaScript pour les fichiers RC - ✅ Tests unitaires et end-to-end complets avec Jest - ✅ Compatible avec Windows, macOS et Linux ## Installation ```bash npm install -g cross-env-cmd ``` ## Utilisation ### Syntaxe de base ```bash cross-env-cmd [options] [env-vars] <command> ``` ### Options - `-e, --env <environment>` : Nom de l'environnement depuis le fichier `.cross-env-cmdrc` - `-f, --file <file>` : Fichier d'environnement à charger (peut être utilisé plusieurs fois) - `--rc <file>` : Fichier de configuration RC (par défaut: `.cross-env-cmdrc`) - `-h, --help` : Afficher l'aide - `-v, --version` : Afficher la version ### Exemples #### 1. Utilisation avec un environnement défini ```bash cross-env-cmd -e staging npm start ``` #### 2. Chargement de fichiers .env supplémentaires ```bash cross-env-cmd -e staging -f .env.local npm run build ``` #### 3. Variables d'environnement en ligne de commande ```bash cross-env-cmd -e staging TEST=value DEBUG=true npm test ``` #### 4. Exemple complet (comme demandé) ```bash cross-env-cmd -e staging -f .test.env -f .prod.env TEST=a BETA=e npm run deploy ``` #### 5. Sans fichier RC, juste des fichiers .env ```bash cross-env-cmd -f .env.development -f .env.local NODE_ENV=development npm start ``` ## Configuration Créez un fichier `.cross-env-cmdrc` dans votre projet. Le format est identique à `env-cmd` : ### Format JSON ```json { "environments": { "development": { "NODE_ENV": "development", "LOG_LEVEL": "debug", "DATABASE_NAME": "myapp_development", "API_URL": "http://localhost:3000" }, "staging": { "NODE_ENV": "staging", "LOG_LEVEL": "info", "DATABASE_NAME": "myapp_staging", "API_URL": "https://api-staging.example.com" }, "production": { "NODE_ENV": "production", "LOG_LEVEL": "error", "DATABASE_NAME": "myapp_production", "API_URL": "https://api.example.com" } } } ``` ### Format JavaScript ```javascript module.exports = { environments: { development: { NODE_ENV: 'development', LOG_LEVEL: 'debug', DATABASE_NAME: 'myapp_development', API_URL: 'http://localhost:3000' }, staging: { NODE_ENV: 'staging', LOG_LEVEL: 'info', DATABASE_NAME: 'myapp_staging', API_URL: 'https://api-staging.example.com' }, production: { NODE_ENV: 'production', LOG_LEVEL: 'error', DATABASE_NAME: 'myapp_production', API_URL: 'https://api.example.com' } } }; ``` ### Avertissement **NE JAMAIS METTRE DE SECRETS, CLÉS API, etc, dans ce fichier. Il est conçu pour partir sur un repertoire gitub. ## Ordre de priorité des variables 1. **Variables en ligne de commande** (priorité la plus haute) 2. **Fichiers .env spécifiés via `-f`** 3. **Variables définies dans le fichier RC** 4. **Fichiers .env définis dans le fichier RC** 5. **Variables d'environnement système existantes** ## Tests ```bash # Tests unitaires et end-to-end npm test # Tests en mode watch npm run test:watch # Tests avec couverture npm run test:coverage # Tests end-to-end uniquement npm run test:e2e # Tests manuels npm run test:manual # Tous les tests (build + tests + manuels) npm run test:all ``` ## CI/CD Le projet utilise GitHub Actions pour l'intégration continue : - **CI** : Tests automatiques sur Node.js 18.x, 20.x, 21.x - **Code Quality** : Vérifications TypeScript, audit de sécurité - **Cross-Platform** : Tests sur Ubuntu, Windows, macOS - **Performance** : Tests de performance et de charge - **Release** : Publication automatique sur npm Voir [docs/CI-CD.md](docs/CI-CD.md) pour plus de détails. ## Développement ```bash # Installer les dépendances npm install # Compiler TypeScript npm run build # Développement avec ts-node npm run dev -e staging -f test.env TEST=value npm start # Tests unitaires npm test # Tests end-to-end npm run test:e2e ``` ## Structure du projet ``` src/ ├── bin/ │ └── cross-env-cmd.ts # CLI principal ├── lib/ │ └── index.ts # Bibliothèque principale ├── types/ │ └── index.ts # Définitions TypeScript ├── __tests__/ │ ├── lib/ # Tests unitaires │ ├── bin/ # Tests CLI │ └── e2e/ # Tests end-to-end └── index.ts # Point d'entrée ``` ## Licence MIT