2014-04-15 16 views
13

Tôi không thực sự hiểu cách Composer hoạt động với cài đặt ổn định tối thiểu.Gói không có sẵn trong phiên bản đủ ổn định theo cài đặt độ ổn định tối thiểu

Tôi có hai gói. Giả sử, PackageAPackageB.

Các composer.json tập tin của PackageA trông như thế này:

{ 
    "name": "vendor/packagea", 
    "minimum-stability": "dev", 
    "require": { 
     "vendor/packageb": "dev" 
    } 
} 

Vì vậy, đòi hỏi PackageAPackageB. Các json của PackageB trông như thế này:

{ 
    "name": "vendor/packageb", 
    "minimum-stability": "dev" 
} 

Vì vậy, cả hai nói sự ổn định tối thiểu là dev. Vì vậy, tôi cho rằng khi tôi làm:

composer create-project vendor/packagea 

Nhưng sau đó nó than phiền với thông điệp:

[InvalidArgumentException] 
Could not find package vendor/packagea with stability stable. 

Mà tôi thấy lạ, bởi vì tôi sẽ giả định rằng cài đặt sự ổn định tối thiểu để dev sẽ kéo gói từ nhánh "phát triển" của nó. Mà trong trường hợp của github luôn luôn là dev-master.

Vì vậy, tôi đã cố gắng để cài đặt nó bằng cách nói với nhà soạn nhạc gì chi nhánh để sử dụng:

composer create-project vendor/packagea testFolder dev-master 

Nhưng sau đó nó phàn nàn rằng nó không thể tìm thấy PackageB:

Installing dependencies (including require-dev) 
Your requirements could not be resolved to an installable set of packages. 

    Problem 1 
    - The requested package vendor/packageb dev could not be found. 

Sau đó, làm thế nào tôi có thể cài đặt gói của tôi? Tôi vẫn đang phát triển vì vậy tôi không muốn tạo ra một thông cáo cho PackageA và PackageB chưa ...

Trả lời

13

Có hai vấn đề:

Trong tạo dự án, theo mặc định lệnh sử dụng ổn định ổn định để tìm kiếm gói cài đặt, đó là lý do tại sao nó hoạt động nếu bạn chỉ định dev-master nhưng không theo mặc định. Bạn có thể tuy nhiên cũng chạy composer create-project vendor/packagea -s dev

Sau khi cài đặt phụ thuộc, tôi đoán rằng gói của bạn không tồn tại trong một phiên bản vừa gọi dev, vì vậy nó không thể tìm thấy nó nếu bạn cần nó như thế. Yêu cầu người quản lý có thể sẽ làm việc, như:

{ 
    "name": "vendor/packagea", 
    "minimum-stability": "dev", 
    "require": { 
     "vendor/packageb": "dev-master" 
    } 
} 
+0

Thay đổi 'require' thành' dev-master' hoạt động thực sự. Cũng phải cài đặt nó bằng tùy chọn 'dev-master'. Nhưng nó vẫn có vẻ lạ với tôi. Loos như 'dev' là hoàn toàn vô dụng vì nó thực sự không làm bất cứ điều gì cho tôi. – Vivendi

+0

Yêu cầu '* @ dev' chẳng hạn sẽ là một ràng buộc phiên bản hợp lệ cho phép các phiên bản dev, nhưng bản thân dev có nghĩa là nó cố gắng thực hiện khớp chính xác cho phiên bản được gọi như thế, không tồn tại. – Seldaek

+0

sẽ không hoạt động với nhà soạn nhạc 1.0-dev 2015-07-21: 'Không hợp lệ được cung cấp (= dev) phải là một trong: ổn định, RC, beta, alpha, dev' phải là -sdev: ' composer create-project vendor/packagea -sdev' – dave

0

Làm cách nào để khắc phục sự cố này?

Sau khi cài đặt Composer, hãy chạy lệnh sau để cài đặt Composer Asset Plugin:

php composer.phar global require "fxp/composer-asset-plugin:^1.2.0" 

Bây giờ chọn một trong các mẫu ứng dụng để bắt đầu cài đặt Yii 2.0. Mẫu ứng dụng là một gói chứa bộ khung của ứng dụng Web được viết bằng Yii.

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