Gestion des packages de nouvelle génération avec straight.el
Après une longue et frustrante lutte pour utiliser package.el
+ Quelpa pour gérer mes packages, j'ai mordu la balle et écrit mon propre gestionnaire de packages . Il est destiné à remplacer complètement package.el
en fournissant une expérience de gestion de package qui est supérieure à presque tous les égards.
Vous pouvez lire la documentation très complète pour en savoir plus sur toutes ses fonctionnalités, mais la plus pertinente à cette question est celle qui straight.el
se concentre sur une reproductibilité parfaite . Cela signifie que peu importe si vous démarrez Emacs normalement ou si vous le démarrez sur une nouvelle machine, et que toutes les modifications locales sont contrôlées par la version et peuvent être rétablies dans un état canonique. Concrètement, cela est réalisé en (1) clonant les packages en tant que référentiels Git et en fournissant des outils automatisés pour gérer leur état; (2) utiliser le fichier init comme seule source de vérité pour l'état de gestion des paquets, sans données mutables stockées ailleurs; et (3) en utilisant des fichiers de verrouillage de version facultatifs pour spécifier les révisions Git exactes de chaque paquet, ainsi que tous les référentiels de recettes etstraight.el
lui-même.
Pour commencer, insérez l' extrait de démarrage , qui s'installera et s'activera straight.el
. Ensuite, pour vous assurer qu'un package est installé, il vous suffit d'appeler straight-use-package
dans votre fichier init:
(straight-use-package 'projectile)
Oui, c'est aussi simple que cela. Aucun traitement package-refresh-contents
ou aucune de ces ordures. Si vous supprimez ce formulaire de votre fichier init et redémarrez Emacs, Projectile ne sera plus chargé (contrairement à package.el
). Cela signifie que vous n'avez pas à vous soucier que votre configuration ne fonctionne pas sur une nouvelle machine, car vous dépendiez accidentellement de packages non déclarés.
Vous pouvez installer des packages où et quand vous le souhaitez, tout au long de votre fichier init (pas besoin d'en déclarer la liste en un seul point). Bien sûr, vous pouvez aussi faire
(dolist (package '(ace-jump-mode ... zzz-to-char)) (straight-use-package package))
si vous préférez la liste. Je vous recommande cependant d'utiliser use-package
pour gérer la configuration de votre package. Vous devez d'abord l'installer:
(straight-use-package 'use-package)
Puis, depuis qu'il straight.el
a une intégration intégrée avec use-package
, les éléments suivants "fonctionnent":
(use-package projectile
:straight t
:init (projectile-mode 1))
Une fois que vous avez écrit votre fichier init pour installer les packages dont il a besoin, exécutez M-x straight-freeze-versions
pour enregistrer un fichier de verrouillage de version dans ~/.emacs.d/straight/versions/default.el
. Vous devez garder ce fichier sous contrôle de version, car il permettra straight.el
de vérifier les versions correctes de tous vos packages, lorsque vous lancerez Emacs pour la première fois sur une nouvelle machine. (Vous pouvez revenir manuellement aux versions spécifiées dans le fichier de verrouillage à l'aide de M-x straight-thaw-versions
.)
Pour soutenir l'idée des fichiers dot-machine locaux que j'ai mentionnés dans mon autre réponse , straight.el
propose un système de profil . Je recommande toujours d'utiliser des liens symboliques pour vos fichiers dot (dans ce cas, init.el
votre fichier init local si applicable et le fichier de verrouillage de version si vous souhaitez en utiliser un).
Si vous vous demandez comment se straight.el
compare aux autres gestionnaires de packages, consultez la section de comparaisons détaillées . Mais il y a aussi beaucoup plus de documentation sur tout le reste .
init.el
(en utilisant git par exemple), cette approche fonctionne également (basée suruse-package
): lunaryorn.com/posts/…