2012-07-03 43 views
27

Tôi đang viết một gói R có tên là slidify giúp dễ dàng tạo các trang HTML5 có thể lặp lại từ các tệp R Markdown. Gói này sử dụng các tệp cssjs từ một số khung tạo trình chiếu HTML5 hiện có như dzslides, deck.js v.v. Hiện tại, tôi đã sắp xếp các phiên bản đã tải xuống của các nội dung bên ngoài này trong thư mụccủa slidify, để nó tự động có sẵn cho người dùng khi cài đặt. Trong khi cách tiếp cận này đơn giản, có một số nhược điểm:Quản lý tài sản bên ngoài trong Gói R

  1. Các khuôn khổ này được cập nhật liên tục trên github. Theo thiết lập hiện tại, tôi sẽ phải đẩy một phiên bản mới của gói mỗi khi có bất kỳ khung công tác nào được cập nhật.

  2. Nếu tôi thực hiện bất kỳ điều chỉnh nào cho mặc định cssjs đi kèm với các khung này, thì tôi cần phải hợp nhất các bản cập nhật cẩn thận để không bị mất slidify các tùy chỉnh cụ thể.

Tôi đã có một vài suy nghĩ về cách quản lý việc này.

  1. Không gói các thư viện này bằng slidify. Thay vào đó, hãy cung cấp function để cho phép người dùng thêm các khung mà họ mong muốn.

  2. Thêm các khung này vào thư mục inst\libraries trên slidify, nhưng dưới dạng submodules. Bây giờ, tôi không có ý tưởng nếu thêm chúng như submodules sẽ nhận được chúng được cài đặt nếu ai đó đã sử dụng devtools::install_github.

Vì vậy, câu hỏi của tôi là, khi viết một gói R làm cách nào để quản lý các phụ thuộc không phải R được cập nhật liên tục?

+3

Tôi thực sự thích câu hỏi của bạn; tinh chỉnh các phrasing ở cuối để tránh bỏ phiếu "không xây dựng". – joran

+0

Cảm ơn bạn đã chỉnh sửa. Nó làm cho câu hỏi sạch hơn. – Ramnath

+3

Một khả năng là xem các gói 'xlsx' và' XLConnect'. Cả hai đều phụ thuộc vào các thư viện Java. 'xlsx' định nghĩa (và phụ thuộc vào) một gói độc lập' xlsxjars' chỉ chứa các thư viện. Bằng cách này, mã hạ lưu được tách ra khỏi các thư viện. – Andrie

Trả lời

2

Một tình huống tương tự là xem các gói xlsxXLConnect.

Cả hai gói đều phụ thuộc vào thư viện Java. xlsx định nghĩa (và phụ thuộc vào) một gói độc lập xlsxjars chỉ chứa các thư viện.

Bằng cách này, mã hạ lưu được tách riêng khỏi các thư viện.

Các vấn đề liên quan