Gestión de paquetes de próxima generación con straight.el
Después de una larga y frustrante lucha por usar package.el
+ Quelpa para administrar mis paquetes, mordí la bala y escribí mi propio administrador de paquetes . Se pretende reemplazar package.el
por completo al proporcionar una experiencia de gestión de paquetes que es superior en casi todos los sentidos.
Puede leer la extensa documentación para conocer todas sus características, pero la más relevante para esta pregunta es que se straight.el
centra en la reproducibilidad perfecta . Esto significa que no debería importar si está iniciando Emacs normalmente, o si lo está iniciando en una nueva máquina, y que cualquier cambio local está controlado por la versión y puede revertirse a un estado canónico. En términos prácticos, esto se logra mediante (1) paquetes de clonación como repositorios de Git, y al proporcionar herramientas automatizadas para administrar su estado; (2) usar el archivo init como la única fuente de verdad para el estado de administración de paquetes, sin datos mutables almacenados en otro lugar; y (3) usar archivos de bloqueo de la versión opcional para especificar revisiones exactas de Git de cada paquete, más cualquier repositorio de recetas ystraight.el
sí mismo.
Para comenzar, inserte el fragmento de arranque , que se instalará y activará straight.el
. Luego, para asegurarse de que esté instalado un paquete, simplemente realice una llamada a straight-use-package
su archivo init:
(straight-use-package 'projectile)
Sí, es así de simple. No tratar con package-refresh-contents
nada de esa basura. Si elimina este formulario de su archivo init y reinicia Emacs, Projectile ya no se cargará (a diferencia de package.el
). Esto significa que no tiene que preocuparse de que su configuración de alguna manera no funcione en una nueva máquina porque dependía accidentalmente de paquetes no declarados.
Puede instalar paquetes donde quiera y cuando lo desee, a lo largo de su archivo de inicio (no es necesario declarar una lista de ellos en un solo punto). Por supuesto, también puedes hacer
(dolist (package '(ace-jump-mode ... zzz-to-char)) (straight-use-package package))
si prefieres la lista Sin embargo, le recomiendo que utilice use-package
para administrar la configuración de su paquete. Primero tienes que instalarlo:
(straight-use-package 'use-package)
Luego, como straight.el
tiene una integración incorporada use-package
, lo siguiente "simplemente funciona":
(use-package projectile
:straight t
:init (projectile-mode 1))
Una vez que haya escrito su archivo init para instalar los paquetes que necesita, ejecute M-x straight-freeze-versions
para guardar un archivo de bloqueo de versión ~/.emacs.d/straight/versions/default.el
. Debe mantener este archivo bajo control de versión, ya que le permitirá straight.el
verificar las versiones correctas de todos sus paquetes, cuando inicie Emacs por primera vez en una nueva máquina. (Puede volver manualmente a las versiones especificadas en el archivo de bloqueo usando M-x straight-thaw-versions
).
Para apoyar la idea de archivos de puntos locales de máquina que mencioné en mi otra respuesta , straight.el
ofrece un sistema de perfil . Todavía recomiendo usar enlaces simbólicos para sus archivos de puntos (en este caso, init.el
su archivo de inicio local si corresponde, y el archivo de bloqueo de versión si desea usar uno).
Si se pregunta cómo se straight.el
compara con otros gestores de paquetes, consulte la extensa sección de comparaciones . Pero también hay mucha más documentación sobre todo lo demás .
init.el
(usando git por ejemplo), este enfoque también funciona (basado enuse-package
): lunaryorn.com/posts/…