2012-08-01 25 views
16

Chúng tôi có kho lưu trữ Satis riêng của mình, chúng tôi có thể lưu trữ các phụ thuộc của riêng mình. Điều này hoạt động tốt.Tôi có thể đồng bộ hóa hoặc phản chiếu các phụ thuộc từ packagist.org bằng cài đặt Composer Satis của riêng tôi không?

Nhưng nếu nhà phát triển sử dụng gói không nằm trong kho lưu trữ của chính chúng tôi, thì Composer sẽ tìm nạp gói đó từ GitHub thông qua packagist.org (dưới dạng dự phòng).

Nhưng chúng tôi không muốn phụ thuộc vào packagist.org. Tất cả các phụ thuộc nên được tải xuống từ kho lưu trữ của chính chúng ta. Những gì chúng tôi muốn biết, nếu có thể Satis tải xuống một gói từ Packagist, nếu nó chưa có sẵn tại địa phương, và sau đó lưu trữ nó và tự động thêm nó vào kho lưu trữ riêng của Satis.

Bằng cách này, chúng tôi không phải tự thêm các phụ thuộc vào kho lưu trữ Satis.

+0

Gói chỉ lưu trữ siêu dữ liệu gói. Mã nguồn thực tế đến từ một kho lưu trữ (thường là gitHub). Tôi đoán bạn có thể duyệt mã nguồn của nhà soạn nhạc để tìm hiểu cách họ liệt kê các gói và tải xuống siêu dữ liệu. – Tivie

Trả lời

15

Satis hiện hỗ trợ tính năng này.

Chỉ cần theo dõi Satis setup instructions và thêm phần sau vào tệp cấu hình của bạn (được đặt tên theo satis.json theo mặc định). Cập nhật tiền tố-url và yêu cầu khi thích hợp.

{ 
    "repositories": [ 
     { "type": "composer", "url": "https://packagist.org" } 
    ], 
    "require-dependencies": true, 
    "require": { 
     {{your application dependencies from composer.json}} 
    }, 
    "archive": { 
     "directory": "dist", 
     "prefix-url": "{{your server}}", 
     "skip-dev": true 
    } 
} 

Sau đó, bạn có thể tạo kho Satis của bạn như bình thường:

php bin/satis build <configuration file> <build dir> 

Bây giờ, kho Satis của bạn sẽ làm hài lòng tất cả các phụ thuộc của ứng dụng của bạn.


Lưu ý: lần chạy đầu tiên có thể mất một lúc. Các lần chạy tiếp theo nhanh hơn nhiều. Ngoài ra, lưu ý rằng Satis sử dụng/tmp cho bộ nhớ cache của nó. Trên một hệ thống bộ nhớ nhỏ, nơi/tmp được hỗ trợ bởi tmpfs, bạn có thể cần phải tăng không gian/tmp có sẵn nếu bạn có một cây phụ thuộc lớn.

Bạn cũng có thể muốn disable the Packagist repository trong tệp composer.json của dự án để thực thi tất cả các phụ thuộc đến từ kho lưu trữ Satis của bạn. Để thực hiện việc này, hãy thêm:

{ 
    "repositories": [ 
     { 
      "packagist": false 
     } 
    ] 
} 

vào composer.json của dự án của bạn.

+0

Cảm ơn bạn đã bình luận! Cấu hình này sẽ không làm cho trường hợp Satis của bạn phụ thuộc vào Packagist khi nó lưu trữ tất cả các phụ thuộc (ví dụ: 'php bin/satis build')? Vì vậy, nếu Packagist.org đã xuống khi bạn chạy 'php bin/satis build', nó sẽ không biết nơi mà mỗi phụ thuộc sống. Cấp, điều này có nghĩa là bằng tay duy trì một danh sách tất cả các URL kho lưu trữ chuẩn trong 'kho lưu trữ' nhưng đó là mức giá bạn phải trả để được độc lập. Hay tôi đang thiếu một cái gì đó? –

+0

Bạn đúng, nhưng nó không phải là lớn của một thỏa thuận bởi vì nếu Packagist là xuống, bạn vẫn có tất cả các phụ thuộc mà bạn kéo xuống trong thời gian chạy Satis cuối cùng.Trong thực tế, tôi nghĩ bạn sẽ gặp phải (và sửa) mọi vấn đề bên ngoài (như Packagist không khả dụng) khi bạn chủ động thay đổi các phụ thuộc và sử dụng gương phụ thuộc hoàn toàn hài lòng trong quá trình phát triển và sản xuất bình thường. – rynemccall

+0

Vấn đề ở đây là bạn vẫn cần phải thêm tất cả các phụ thuộc theo cách thủ công. Nếu bạn đã có một repo git bạn chỉ có thể thêm rằng, nhưng các phụ thuộc theo yêu cầu của dự án trong repo đó sẽ không tự động được tải, đó là một nỗ lực lớn bằng tay. – Lars

6

Bạn có thể sử dụng broker để đạt được điều này ngay bây giờ. Nhiều khả năng khả năng này sẽ được thêm vào satis chính nó xuống dòng.

+0

cảm ơn bạn, điều này có vẻ chính xác những gì tôi cần. – Niborb

+2

"Lưu ý: dự án này không được duy trì tích cực nữa. Vì [satis] (https://github.com/composer/satis) hỗ trợ chức năng tương tự, bạn nên sử dụng [satis] (https://github.com/ nhà soạn nhạc/satis) thay thế. " – MPV