Làm thế nào để yêu cầu một ngã ba với nhà soạn nhạc


172

đây là composer.json của tôi, tôi muốn sử dụng ngã ba dự án lessphp của Nodge trên Github

 "repositories": [{
    "type": "package",
    "package": {
        "version": "dev-master",
        "name": "nodge/lessphp",
        "source": {
            "url": "https://github.com/Nodge/lessphp.git",
            "type": "git",
            "reference": "master"
        },
        "autoload": {
            "classmap": ["lessc.inc.php"]
        }
    }
}],
"require": {
    "php": ">=5.3.3",
    "nodge/lessphp": "dev-master"
},

Nhưng tôi có lỗi này khi tôi cập nhật:

nodge / lessphp dev-master -> không tìm thấy gói phù hợp.

Tôi không biết làm thế nào để yêu cầu nó chính xác ngã ba này ...

Bất kỳ đề xuất ?

Câu trả lời:


228

Cách phổ biến nhất (và dễ dàng hơn) là sử dụng kho lưu trữ VCS.

Tất cả bạn phải làm là thêm ngã ba của bạn như một kho lưu trữ và cập nhật các ràng buộc phiên bản để trỏ đến nhánh tùy chỉnh của bạn. Tên chi nhánh tùy chỉnh của bạn phải được bắt đầu bằng dev-.

Ví dụ giả sử bạn đã vá độc thoại để sửa lỗi trong nhánh lỗi:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/igorw/monolog"
        }
    ],
    "require": {
        "monolog/monolog": "dev-bugfix"
    }
}

Lưu ý rằng bạn không thay đổi câu lệnh yêu cầu ngoại trừ chỉ định nhánh lỗi của bạn. Bạn vẫn tham chiếu gói ngược dòng ( monolog/monolog), không phải ngã ba cá nhân của bạn ( igorw/monolog). Bạn có thể đọc chi tiết trong các tài liệu


6
Điều này dường như không hoạt động đối với github.com/Polycademy/purl , một nhánh của github.com/jwage/purl Tôi đã cố gắng: "kho lưu trữ": [{"type": "vcs", "url ":" git@github.com: Polycademy / purl.git "}] và" yêu cầu ": {" jwade / purl ":" dev-master ",}, nhưng tôi vẫn nhận được: Vấn đề 1 - Gói được yêu cầu jwade / purl không thể tìm thấy trong bất kỳ phiên bản nào, có thể có một lỗi đánh máy trong tên gói.
CMCDragonkai

11
@CMCDragonkai hãy thử chạy composer show jwade/purl -vnó sẽ cho bạn biết lý do tại sao nó bỏ qua phiên bản dev-master nếu có.
Seldaek

4
@seldaek bạn đã cứu tôi! cảm ơn bạn! (Cái nĩa của tôi được gọi là dev-dev- ..) không biết việc đặt tên là tự động.
Miguel Stevens

15
"Đọc tài liệu" là một câu trả lời tồi, một câu trả lời tốt hơn sẽ là đưa ra một ví dụ cụ thể
oskarth

7
Rất vui để cảnh báo về việc không tham khảo ngã ba cá nhân. Điều này đã cứu ngày của tôi, +1
edrian

42

Sử dụng VCS hoạt động:

"name": "test/test",
"repositories": [{
    "type": "vcs",
    "url": "http://github.com/Nodge/lessphp"
}],
"require": {
    "leafo/lessphp": "dev-master"
},

Nhưng nếu tôi yêu cầu một mô-đun có cái này composer.json, nó không hoạt động. Nó cài đặt dự án ban đầu, không phải ngã ba.

Thí dụ

"name": "example/example",
"require": {
    "test/test": "dev-master"
},

Tôi nên đề cập lại các kho lưu trữ. Điều đó có bình thường không?


cùng một vấn đề ở đây
Aysennoussi

Xóa thủ công mô-đun bằng cách sử dụng "rm -rf" và sau đó "cập nhật trình soạn thảo". Điều đó làm việc cho tôi.
Hubert Perron

3
Tôi đã sử dụng một tá dĩa, và điều này không bao giờ làm việc . Đây là một giải pháp hiệu quả: stackoverflow.com/a/27970559/183904
Julien

4
@Julien, tôi đã chỉ được sử dụng phương pháp này và nó làm việc như một nét duyên dáng ... Các tài liệu là khá rõ ràng, bạn chỉ cần phải nhớ để đặt dev- tiền tố trong tên chi nhánh tùy chỉnh của bạn khi yêu cầu gói trong câu hỏi.
mTorres

2
Làm việc cho tôi ... nhưng tôi muốn đề cập rằng tôi cần sử dụng https: // cho URL.
plong0

33

Nếu bạn không thể có câu trả lời @Neilime để làm việc cho mình, hãy đảm bảo rằng nĩa của bạn sử dụng một chi nhánh khác.

Ví dụ: đẩy các thay đổi của bạn đến một nhánh trên nhánh của bạn được gọi my-bugfix, không thêm dev-tiền tố vào tên nhánh của bạn nhưng trong composer.json, bạn phải thêm nó. Tệp soạn thảo của bạn sẽ trông như sau:

"repositories":
[
    {
        "type": "vcs",
        "url": "http://github.com/yourname/packageName"
    }
],
"require": {
    "owner/packageName": "dev-my-bugfix"
},

1
Đây là lời giải thích khéo léo và rõ ràng cho tôi! Cảm ơn bạn !
Dominik

1
Nhưng nếu đó ngã ba của người khác thì sao? Xem ví dụ ở đây
abbood

Ngoài ra, nametrường trong composer.jsontệp kho lưu trữ của bạn sẽ giữ nguyên với chủ sở hữu ban đầu.
NecipAllef 23/03/18

11

Tôi đã thử nhiều lựa chọn nhưng sau khi tôi nhận được bài đăng này, tôi thấy ánh sáng và nó hoạt động hoàn hảo.

Đây là những việc bạn phải làm:

1- Kho lưu trữ Fork de

2- Tạo một nhánh và thực hiện các sửa đổi cần thiết.

3- Thêm nhãn kho lưu trữ vào composer.json của bạn

"repositories": [

        {
            "type": "vcs",
            "url": "https://github.com/user/yourforkname"
        }
    ]

4 - Trong dòng lệnh bên trong dự án của bạn yêu cầu ngã ba của bạn như thế này:

composer require vendor/packagename:dev-branchname

Và Voila!!

Bạn có phiên bản ngã ba của bạn làm việc


7

Theo tài liệu của Nhà soạn nhạc http://getcomposer.org/doc/05-reposerequire khu.md#vcs , đủ để chỉ định kho lưu trữ ban đầu (không phải ngã ba) trong ("nodge / lessphp" trong trường hợp của bạn). Nhà soạn nhạc sau đó sẽ cài đặt ngã ba CỦA BẠN (xem mã trong các nhà cung cấp)


5

Vì vậy, đây là năm 2019, và hầu hết các câu trả lời ở đây đã chính xác.

Tuy nhiên, nếu bạn thấy mình, trong trường hợp bạn cần phải có một nhánh cụ thể của ngã ba (mà bạn đã tạo), trước tiên hãy liệt kê danh sách các phiên bản / thẻ có sẵn. Điều này giúp tôi tiết kiệm rất nhiều thời gian.

Một ví dụ đầy đủ với spatie/laravel-backupgói.

Đầu tiên, thêm repositorieskhóa vào composer.json. Với url của ngã ba của bạn

"repositories": [{
   "type": "vcs",
   "url": "https://github.com/holymp2006/laravel-backup"
 }]

Nhận phiên bản / thẻ có sẵn

composer show "spatie/laravel-backup" --all

Chọn phiên bản bạn muốn từ versionsđầu ra thiết bị đầu cuối, sau đó yêu cầu phiên bản đó

composer require spatie/laravel-backup:v5.x-dev

2

Tôi thường thêm một nút "dist" vào định nghĩa gói. Tôi chưa bao giờ gặp vấn đề khi sử dụng nó theo cách này.

Tuy nhiên, tôi không thể nhớ mình đã nhận được mẹo này từ đâu để có thêm lời giải thích.

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "version": "dev-master",
                "name": "nodge/lessphp",
                "source": {
                    "url": "https://github.com/Nodge/lessphp.git",
                    "type": "git",
                    "reference": "master"
                },
                "autoload": {
                    "classmap": ["lessc.inc.php"]
                },
                "dist": {
                    "url": "https://github.com/Nodge/lessphp/archive/master.zip",
                    "type": "zip"
                }
            }
        }
    ],
    "require": {
        "nodge/lessphp": "*"
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.