Quản lý gói thế hệ tiếp theo với straight.el
Sau một thời gian dài và bực bội khi sử dụng package.el
+ Quelpa để quản lý các gói của mình, tôi cắn viên đạn và viết trình quản lý gói của riêng mình . Nó được thiết kế để thay thế hoàn toàn package.el
bằng cách cung cấp một kinh nghiệm quản lý gói đó là cấp trên trong hầu hết mọi phương diện.
Bạn có thể đọc tài liệu rất rộng để tìm hiểu về tất cả các tính năng của nó, nhưng tài liệu phù hợp nhất với câu hỏi này là straight.el
tập trung vào khả năng tái tạo hoàn hảo . Điều này có nghĩa là không quan trọng bạn đang khởi động Emacs bình thường hay khởi động nó trên máy mới và mọi thay đổi cục bộ đều được kiểm soát phiên bản và có thể được hoàn nguyên về trạng thái chính tắc. Thực tế, điều này đạt được bằng cách (1) các gói nhân bản dưới dạng kho Git và cung cấp các công cụ tự động để quản lý trạng thái của chúng; (2) sử dụng tệp init làm nguồn sự thật duy nhất cho trạng thái quản lý gói, không có dữ liệu có thể thay đổi được lưu trữ ở nơi khác; và (3) sử dụng các tệp khóa phiên bản tùy chọn để chỉ định các bản sửa đổi Git chính xác của mỗi gói, cộng với mọi kho công thức vàstraight.el
chinh no.
Để bắt đầu, hãy chèn đoạn trích bootstrap , đoạn này sẽ cài đặt và kích hoạt straight.el
. Sau đó, để đảm bảo rằng gói được cài đặt, chỉ cần thực hiện cuộc gọi đến straight-use-package
tệp init của bạn:
(straight-use-package 'projectile)
Vâng, nó đơn giản. Không xử lý package-refresh-contents
hoặc bất kỳ rác thải đó. Nếu bạn xóa biểu mẫu này khỏi tệp init và khởi động lại Emacs, Projectile sẽ không còn được tải (không giống như trong package.el
). Điều này có nghĩa là bạn không phải lo lắng về cấu hình của mình bằng cách nào đó không hoạt động trên máy mới vì bạn vô tình phụ thuộc vào các gói không được khai báo.
Bạn có thể cài đặt các gói bất cứ nơi nào và bất cứ khi nào bạn muốn, trong toàn bộ tệp init của bạn (không cần phải khai báo danh sách của chúng tại một điểm). Tất nhiên bạn cũng có thể làm
(dolist (package '(ace-jump-mode ... zzz-to-char)) (straight-use-package package))
nếu bạn thích danh sách Tuy nhiên tôi khuyên bạn nên sử dụng use-package
để quản lý cấu hình gói của mình. Đầu tiên bạn phải cài đặt nó:
(straight-use-package 'use-package)
Sau đó, vì straight.el
đã tích hợp sẵn với use-package
, "chỉ hoạt động" sau đây:
(use-package projectile
:straight t
:init (projectile-mode 1))
Khi bạn đã viết tệp init của mình để cài đặt các gói cần thiết, hãy chạy M-x straight-freeze-versions
để lưu tệp khóa phiên bản ~/.emacs.d/straight/versions/default.el
. Bạn nên giữ tệp này dưới sự kiểm soát phiên bản, vì nó sẽ cho phép straight.el
kiểm tra các phiên bản chính xác của tất cả các gói của bạn, khi bạn lần đầu tiên khởi chạy Emacs trên một máy mới. (Bạn có thể hoàn nguyên thủ công các phiên bản được chỉ định trong tệp khóa bằng cách sử dụng M-x straight-thaw-versions
.)
Để hỗ trợ ý tưởng về các dotfiles cục bộ mà tôi đã đề cập trong câu trả lời khác của mình , hãy straight.el
cung cấp một hệ thống hồ sơ . Tôi vẫn khuyên bạn nên sử dụng symlink cho dotfiles của bạn (trong trường hợp này init.el
là tệp init cục bộ của bạn nếu có và phiên bản lockfile nếu bạn muốn sử dụng một).
Nếu bạn đang tự hỏi làm thế nào straight.el
so sánh với các trình quản lý gói khác, hãy xem phần so sánh mở rộng . Nhưng có rất nhiều tài liệu về mọi thứ khác , quá.
init.el
xung quanh (ví dụ như sử dụng git), phương pháp này cũng hoạt động (dựa trênuse-package
): lunaryorn.com/posts/iêu