Ligne de commande (jpgboost-cli)
jpgboost-cli compresse vos images sans lancer l'interface graphique. C'est l'outil à privilégier pour les scripts, les tâches planifiées et les chaînes d'intégration continue.
Votre licence couvre jusqu'à deux installations que vous utilisez personnellement. L'application et la CLI comptent chacune comme une installation distincte, même lorsqu'elles sont installées sur le même Mac. Elles apparaissent comme des appareils dans Réglages > Licence.
Un serveur qui exécute uniquement la CLI pour vos propres automatisations, comme une intégration continue ou une tâche planifiée, peut donc occuper l'une de ces deux installations sans nécessiter de licence supplémentaire. Pour plus d'informations, consultez les sections Licence sur un serveur et Une licence par utilisateur.
À quoi sert la ligne de commande
jpgboost-cli est un exécutable autonome, livré dans JPGBoost.app. Il ne dépend ni de l'API locale, ni d'une instance de l'application en cours d'exécution : il utilise directement le même moteur de décodage et d'encodage, et produit donc exactement les mêmes fichiers que l'interface graphique.
C'est le point d'entrée à privilégier lorsque aucune interface ne doit s'ouvrir : script shell, tâche planifiée, chaîne d'intégration continue, traitement sur un grand nombre de fichiers.
jpgboost-cli est inclus dans JPGBoost.app. Aucune compilation ni installation de bibliothèque n'est nécessaire, car il utilise les composants déjà intégrés à l'application.
Rendre la commande accessible
Le binaire se trouve dans le bundle de l'application. Vous pouvez l'appeler directement par son chemin complet :
/Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli --help
Pour pouvoir exécuter jpgboost-cli depuis n'importe quel dossier, créez un lien symbolique une seule fois :
sudo ln -s /Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli \
/usr/local/bin/jpgboost-cli
jpgboost-cli --help
Le lien pointant vers le bundle, il reste valide après une mise à jour de l'application. Les exemples de cette page supposent cette installation ; sans elle, remplacez jpgboost-cli par le chemin complet ci-dessus.
Vous pouvez viser un dossier personnel plutôt que /usr/local/bin, par exemple ~/bin, à condition qu'il figure dans votre PATH. Une simple alternative consiste à ajouter un alias à votre ~/.zshrc.
Licence sur un serveur
Une machine qui exécute uniquement la CLI, par exemple un serveur sans interface graphique, peut être activée et administrée sans utiliser JPGBoost.app.
# Identifiant de cette machine, côté CLI
jpgboost-cli --machine-id
# Première activation, avec le jeton reçu par e-mail après achat
jpgboost-cli --activate ACT-XXXX-XXXX-XXXX-XXXX-XXXX
# Depuis ce serveur déjà activé, générer un code pour ajouter un autre appareil
jpgboost-cli --add-device
# Rejoindre une licence via un code généré ailleurs (app ou autre CLI)
jpgboost-cli --pair XXXX-XXXX
# Récupérer une version plus récente de la licence si le serveur en a une
jpgboost-cli --sync
# Nombre d'installations utilisées / limite, et leur liste — lecture locale, sans appel réseau
jpgboost-cli --devices
L'application et la CLI sont considérées comme deux installations distinctes, même lorsqu'elles sont utilisées sur le même Mac. Chacune possède son propre identifiant d'installation et occupe donc une place sur les deux autorisées par une licence Pro.
Vous pouvez ainsi utiliser votre licence de différentes façons, par exemple avec l'application sur votre Mac et la CLI sur un serveur, avec l'application et la CLI sur le même Mac, avec l'application sur deux Mac différents, ou encore avec la CLI seule sur un serveur n'exécutant jamais l'application.
Syntaxe et options
jpgboost-cli <fichier...> --output <dossier> [options]
| Option | Rôle | Valeur par défaut |
|---|---|---|
--output <dossier> | Dossier de destination, créé s'il n'existe pas | Obligatoire |
--quality <1-100> | Qualité de compression | 75 |
--format <format> | png, jpeg, heic, avif, webp ou jxl | jpeg |
--profile <nom> | Applique un profil d'export nommé | Aucun |
--jobs <N> | Fichiers traités en parallèle | Nombre de cœurs |
--json | Sortie JSON structurée au lieu du texte lisible | Désactivé |
--help | Affiche l'aide | — |
Premiers exemples
# Deux fichiers vers WebP, qualité 60
jpgboost-cli photo1.jpg photo2.png --quality 60 --format webp --output ./compresse
# photo1.jpg : 4,2 Mo -> 890 Ko (-79%) -> ./compresse/photo1.webp
# photo2.png : 1,8 Mo -> 620 Ko (-66%) -> ./compresse/photo2.webp
#
# 2 fichier(s) traite(s), 0 echec(s).
# Tout un dossier vers AVIF
jpgboost-cli ~/Images/export/*.png --format avif --quality 65 --output ~/Images/web
Traitement par lot et parallélisme
Pour des centaines ou des milliers de fichiers, l'option --jobs traite plusieurs images à la fois. Chaque fichier est décodé, encodé puis libéré indépendamment : l'empreinte mémoire ne croît donc pas avec le nombre de fichiers en attente, mais uniquement avec la valeur de --jobs.
# Huit fichiers traités simultanément
jpgboost-cli ~/Photos/lot/*.jpg --jobs 8 --format webp --output ~/Photos/web
# Un seul à la fois, pour limiter la charge sur une machine partagée
jpgboost-cli ~/Photos/lot/*.jpg --jobs 1 --format webp --output ~/Photos/web
Sur un lot de 12 fichiers, --jobs 8 s'est révélé environ quatre fois plus rapide que --jobs 1. Le gain réel dépend du nombre de cœurs de votre Mac et du format visé : AVIF et JPEG XL sont nettement plus lents à encoder que JPEG ou HEIC.
Utiliser un profil d'export
L'option --profile reprend un profil créé dans l'application ou via l'API. Elle ne comble que ce que vous n'avez pas précisé explicitement.
# Format, qualité et dossier viennent tous du profil
jpgboost-cli --profile "Web JPEG" *.png
# Le dossier explicite l'emporte, le reste vient du profil
jpgboost-cli --profile "Web JPEG" --output ./livraison *.png
La CLI peut aussi créer ou mettre à jour un profil directement, sans passer par Réglages ni l'API locale :
jpgboost-cli --create-profile "Web JPEG" --format jpeg --quality 70 --output ./compresse
--format et --quality sont obligatoires, --output optionnel (le dossier indiqué doit déjà exister). Un nom déjà utilisé écrase le profil existant au lieu d'en créer un doublon — même comportement que l'onglet Profils de l'app et que l'API locale. Nécessite JPGBoost Pro, comme le reste de la CLI.
Sortie JSON
Avec --json, la sortie est un tableau JSON dans lequel chaque fichier traité correspond à un objet JSON, avec la même forme que les réponses de l'API locale, ce qui facilite l'enchaînement avec jq ou tout autre outil.
jpgboost-cli *.png --format webp --output ./out --json
# Chaînage avec jq : ne garder que les fichiers en erreur
jpgboost-cli *.png --format webp --output ./out --json \
| jq '.[] | select(.error != null)'
Champs disponibles : path, originalSizeBytes, compressedSizeBytes, ratio, destination et error.
Codes de sortie
| Code | Signification |
|---|---|
0 | Tous les fichiers ont été traités avec succès |
77 | Aucune licence Pro valide sur cette machine |
| Non nul | Au moins un fichier a échoué ; utilisable directement dans un script ou en intégration continue |
Fichiers de même nom
Deux fichiers d'entrée portant le même nom de base visent naturellement la même sortie. a/photo.jpg et b/photo.png convertis en WebP donneraient tous deux photo.webp.
JPGBoost ne les écrase pas : le second reçoit un nom distinct.
a/photo.jpg -> photo.webp
b/photo.png -> photo-2.webp
Les noms sont attribués dans l'ordre des arguments, indépendamment de l'ordre d'exécution avec --jobs : le résultat est donc reproductible. La même règle s'applique dans l'application, les Raccourcis, AppleScript et les dossiers surveillés.
Cette règle ne concerne que les collisions entre fichiers différents. Réexporter le même fichier vers le même dossier écrase bien sa sortie précédente, sans accumuler photo-2, photo-3, et ainsi de suite.
Vérifier l'installation
Vérifiez à tout moment que la commande répond correctement :
jpgboost-cli --help