Tôi đang làm việc trên gói lua đầu tiên của mình, và tôi vô cùng bối rối về những gì để đặt tên cho (các) rockspec của tôi và nơi đặt chúng. Mỗi gói lua phổ biến tôi xem xét dường như đối phó với rockspecs khác nhau. Điều này rất khác so với Ruby, trong đó mỗi viên đá quý chỉ có một đơn gemspec
. Dưới đây là một số ví dụ:Cách tốt nhất để quản lý các tệp rockarec luarocks là gì và tại sao?
- lua-cliargs: a rockspec đơn trong thư mục gốc của dự án, (ví dụ
lua_cliargs-3.0-1.rockspec
) - ldoc: a rockspec đơn trong thư mục gốc của dự án, được đặt tên với
scm
thay vì một số phiên bản (ví dụldoc-scm-2.rockspec
) - lua-MessagePack: nhiều, rockspecs phiên bản tên lưu trữ trong một thư mục cấp cao nhất
rockspec/
(ví dụlua-messagepack-0.1.0-1.rockspec
...lua-messagepack-0.3.4-1.rockspec
), tiếp theo là một số với một phiên bản lua thêm chèn vào trước các phiên bản gói (ví dụlua-messagepack-lua53-0.3.6-1.rockspec
). Đôi khi có hai bản rockspecs cho cùng một phiên bản gói, một phiên bản chứa lua53 và một không. - luafilesystem: nhiều, rockspecs phiên bản tên lưu trữ trong một thư mục cấp cao nhất
/rockspec
(ví dụluafilesystem-1.3.0-1.rockspec
...luafilesystem-1.6.1-1.rockspec
), tiếp theo là một số cócvs
thay vì một số phiên bản gói chèn vào trước các phiên bản gói (ví dụluafilesystem-cvs-1.rockspec
,luafilesystem-cvs-2.rockspec
). - lpeg: không rockspec ở tất cả
- luasocket: một rockspec trong thư mục gốc chứa
scm
thay vì một số gói (ví dụluasocket-scm-0.rockspec
), và một thư mục/rockspec
chứa một rockspec duy nhất với một số gói (ví dụluasocket-3.0rc2-1.rockspec
)
Bây giờ, this question giải thích tại sao người ta sẽ có một "làm việc" tập tin rockspec và một thư mục riêng biệt đầy đủ các rockspecs release-phiên bản, nhưng tôi vẫn có một số câu hỏi:
- Bản sửa đổi rockspec là gì? Wiki luarocks nói rằng các gói phát hành nên được gắn thẻ trong git với số phiên bản và ví dụ mà nó đưa ra không bao gồm bản sửa đổi rockspec. Nếu rockspec của tôi là trong VCS, và tôi gắn thẻ một cam kết cụ thể, sau đó không có hiệu quả sửa chữa các rockspec (s) bao gồm trong cam kết đó và do đó phiên bản? Bản sửa đổi sau này cho rockspec không thể có trong cam kết được gắn thẻ.
- Làm cách nào để
lpeg
được liệt kê trên luarocks nhưng thiếurockspec
? - Wiki luarocks nói rằng
scm
nên được sử dụng thay cho số phiên bản gói nếu bạn muốn rockspec của bạn tham chiếu đến HEAD. Nhưng kể từ khiHEAD
liên tục thay đổi và rockspec phải liệt kê tất cả các tệp, có vẻ như cần phải liên tục tăng sốrevision
của rocksecscm
để theo kịp với bất kỳ tệp đã thêm hoặc xóa nào. Người ta có thể giải quyết vấn đề này bằng cách không sử dụng số bản sửa đổi nào cả choscm
các điểm phát sóng, nhưng những cái tôi thấy có số bản sửa đổi thấp (ví dụ:ldoc-scm-2.rockspec
). Đây có phải là một sai lầm? - Có bất kỳ ví dụ nào ở trên được coi là phương pháp hay nhất không?
_'mã nguồn cần thay đổi ở tất cả'_ '->' _'mã nguồn không cần thay đổi gì cả'_? – Oka
Điều này thật tuyệt vời, cảm ơn câu trả lời nhanh chóng và kỹ lưỡng! –
@Oka: lỗi chính tả, cảm ơn! T và N là các phím liền kề trong Dvorak :) –