Documentation du Projet Commands¶
Bienvenue dans la documentation du projet Commands. Cette section couvre nos utilitaires en ligne de commande et nos outils d'automatisation.
Aperçu¶
Le projet Commands fournit une suite d'outils en ligne de commande conçus pour rationaliser les tâches de développement, de déploiement et opérationnelles dans l'écosystème Optim.
Commandes Disponibles¶
Commandes Principales¶
docker build- Automatisation de construction et packagingdocker compose up -d- Lancement des conteneursdocker compose down- Fermeture des conteneurs
Commandes de Développement¶
optim-dev- Configuration de l'environnement de développementoptim-lint- Qualité de code et lintingoptim-format- Utilitaires de formatage de codeoptim-analyze- Analyse de code et métriques -->
Commandes d'Opérations¶
Démarrage Rapide¶
Installation¶
Utilisation de Base¶
# Afficher l'aide
optim --help
# Vérifier la version
optim --version
# Construire le projet
optim-build --env production
# Exécuter les tests
optim-test --coverage
# Déployer l'application
optim-deploy --target staging
Référence des Commandes¶
Commandes de Construction¶
# Construire avec un environnement spécifique
optim-build --env [development|staging|production]
# Construire avec une configuration personnalisée
optim-build --config ./custom-build.json
# Construire avec sortie détaillée
optim-build --verbose
# Nettoyer les artefacts de construction
optim-build --clean
Commandes de Test¶
# Exécuter tous les tests
optim-test
# Exécuter une suite de tests spécifique
optim-test --suite unit
# Exécuter avec couverture
optim-test --coverage
# Exécuter en mode surveillance
optim-test --watch
# Générer un rapport de test
optim-test --report html
Commandes de Déploiement¶
# Déployer vers staging
optim-deploy --target staging
# Déployer avec capacité de rollback
optim-deploy --target production --enable-rollback
# Déploiement en mode simulation
optim-deploy --dry-run
# Déployer une version spécifique
optim-deploy --version 1.2.3
# Effectuer un rollback
optim-deploy --rollback
Configuration¶
Configuration Globale¶
Créer un fichier de configuration globale à ~/.optim/config.json :
{
"defaultEnvironment": "development",
"buildOutputDir": "./dist",
"testTimeout": 30000,
"deploymentTargets": {
"staging": {
"url": "https://staging.optim.com",
"apiKey": "staging-api-key"
},
"production": {
"url": "https://optim.com",
"apiKey": "production-api-key"
}
}
}
Configuration de Projet¶
Créer un fichier de configuration spécifique au projet à ./optim.json :
{
"name": "mon-projet",
"version": "1.0.0",
"build": {
"entry": "./src/index.js",
"outputDir": "./dist",
"sourceMap": true
},
"test": {
"testDir": "./tests",
"coverage": {
"threshold": 80
}
},
"deploy": {
"beforeDeploy": ["optim-test", "optim-build"],
"afterDeploy": ["optim-monitor --health-check"]
}
}
Utilisation Avancée¶
Scripts Personnalisés¶
Variables d'Environnement¶
# Définir des variables spécifiques à l'environnement
export OPTIM_ENV=production
export OPTIM_API_KEY=votre-cle-api
export OPTIM_LOG_LEVEL=debug
# Utiliser dans les commandes
optim-deploy --env $OPTIM_ENV
Hooks et Plugins¶
# Installer un plugin
optim-config install-plugin @optim/eslint-plugin
# Configurer des hooks
optim-config set-hook pre-commit "optim-lint && optim-test"
# Exécuter les hooks manuellement
optim-config run-hook pre-deploy
Exemples d'Intégration¶
Intégration CI/CD¶
# Exemple GitHub Actions
name: Déployer
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configurer Node.js
uses: actions/setup-node@v2
with:
node-version: "16"
- name: Installer les dépendances
run: npm ci
- name: Installer Optim CLI
run: npm install -g @optim/commands
- name: Exécuter les tests
run: optim-test --coverage
- name: Construire l'application
run: optim-build --env production
- name: Déployer
run: optim-deploy --target production
env:
OPTIM_API_KEY: ${{ secrets.OPTIM_API_KEY }}
Intégration Docker¶
# Exemple Dockerfile
FROM node:16-alpine
# Installer Optim CLI
RUN npm install -g @optim/commands
# Copier les fichiers du projet
COPY . /app
WORKDIR /app
# Installer les dépendances
RUN npm ci
# Construire l'application
RUN optim-build --env production
# Démarrer l'application
CMD ["optim", "run", "start"]
Dépannage¶
Problèmes Courants¶
- Commande Introuvable
- Erreurs de Permission
# Utiliser sudo pour l'installation globale
sudo npm install -g @optim/commands
# Ou configurer le préfixe npm
npm config set prefix ~/.npm-global
- Échecs de Construction
# Nettoyer et reconstruire
optim-build --clean
optim-build --verbose
# Vérifier les dépendances
npm audit
Mode Debug¶
# Activer la journalisation de debug
export DEBUG=optim:*
optim-build --verbose
# Vérifier la configuration
optim-config show
# Valider l'environnement
optim-config validate
Développement¶
Contribuer¶
- Forker le dépôt
- Créer une branche de fonctionnalité
- Implémenter les changements avec des tests
- Soumettre une pull request
Développement Local¶
# Cloner le dépôt
git clone https://github.com/optim/commands.git
cd commands
# Installer les dépendances
npm install
# Lier pour les tests locaux
npm link
# Exécuter les tests
npm test
# Construire
npm run build
Créer de Nouvelles Commandes¶
// lib/commands/ma-commande.js
const { Command } = require("@optim/commands-core");
class MaCommande extends Command {
constructor() {
super("ma-commande", "Description de ma commande");
this.option("-f, --force", "Forcer l'exécution");
this.option("-o, --output <dir>", "Répertoire de sortie");
}
async execute(options) {
// Implémentation de la commande
console.log("Exécution de ma commande avec les options:", options);
}
}
module.exports = MaCommande;
Référence API¶
Classes Principales¶
Command- Classe de base pour toutes les commandesConfig- Gestion de la configurationLogger- Utilitaires de journalisationUtils- Fonctions utilitaires communes
Système de Hooks¶
pre-build- Avant l'exécution de la constructionpost-build- Après la completion de la constructionpre-test- Avant l'exécution des testspost-test- Après la completion des testspre-deploy- Avant le déploiementpost-deploy- Après le déploiement
Ressources¶
Pour les questions ou le support, contactez l'Équipe Outils ou créez un ticket dans le dépôt.