Cara membutuhkan garpu dengan komposer


172

di sini adalah composer.json saya, saya ingin menggunakan garpu proyek lessphp Nodge di 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"
},

Tetapi saya memiliki kesalahan ini ketika saya melakukan pembaruan:

nodge / lessphp dev-master -> tidak ada paket yang cocok ditemukan.

Saya tidak tahu cara mengharuskannya dengan benar garpu ini ...

Ada saran?

Jawaban:


228

Cara paling umum (dan lebih mudah) melakukannya adalah menggunakan repositori VCS.

Yang harus Anda lakukan adalah menambahkan garpu Anda sebagai repositori dan memperbarui batasan versi untuk menunjuk ke cabang kustom Anda. Nama cabang khusus Anda harus diawali dengan dev-.

Contoh dengan asumsi Anda menambal monolog untuk memperbaiki bug di cabang perbaikan bug:

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

Perhatikan bahwa Anda tidak mengubah pernyataan persyaratan kecuali untuk menentukan cabang perbaikan bug Anda. Anda masih mereferensikan paket hulu ( monolog/monolog), bukan garpu pribadi Anda ( igorw/monolog). Anda dapat membaca detail di dokumen


6
Tampaknya ini tidak berfungsi untuk github.com/Polycademy/purl yang merupakan garpu dari github.com/jwage/purl. Saya sudah mencoba: "repositori": [{"type": "vcs", "url ":" git@github.com: Polycademy / purl.git "}], dan" mengharuskan ": {" jwade / purl ":" dev-master ",}, Tapi saya tetap mendapatkan: Masalah 1 - paket yang diminta jwade / purl tidak dapat ditemukan dalam versi apa pun, mungkin ada kesalahan ketik pada nama paket.
CMCDragonkai

11
@ CMCDragonkai mencoba menjalankannya composer show jwade/purl -vharus memberi tahu Anda mengapa ia mengabaikan versi dev-master jika ya.
Seldaek

4
@seldaek Anda menyelamatkan saya! Terima kasih! (Garpu saya disebut dev-dev- ..) tidak tahu penamaannya secara otomatis.
Miguel Stevens

15
"Baca dokumen" adalah jawaban yang buruk, jawaban yang lebih baik adalah dengan memberikan contoh nyata
oskarth

7
Senang memperingatkan tentang tidak merujuk ke garpu pribadi. Ini menyelamatkan hari saya, +1
edrian

42

Menggunakan VCS berfungsi:

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

Tetapi jika saya memerlukan modul yang memiliki ini composer.json, tidak berfungsi. Itu menginstal proyek asli, bukan garpu.

Contoh

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

Saya harus menyebutkan lagi repositori. Apakah itu normal?


sama di sini masalah yang sama
Aysennoussi

Hapus modul secara manual menggunakan "rm -rf" dan kemudian "pembaruan komposer". Itu berhasil bagi saya.
Hubert Perron

3
Saya telah menggunakan selusin garpu, dan ini tidak pernah berhasil . Inilah solusi yang berfungsi: stackoverflow.com/a/27970559/183904
Julien

4
@ Julien, saya baru saja menggunakan metode ini dan itu bekerja seperti pesona ... Dokumennya cukup jelas, Anda hanya harus ingat untuk meletakkan awalan dev pada nama cabang kustom Anda saat memerlukan paket yang dimaksud.
mTorres

2
Berhasil bagi saya ... tetapi saya ingin menyebutkan bahwa saya perlu menggunakan https: // untuk URL.
plong0

33

Jika Anda tidak bisa mendapatkan jawaban @Neilime untuk Anda, pastikan garpu Anda menggunakan cabang yang berbeda.

Misalnya, dorong perubahan Anda ke cabang di garpu yang dipanggil my-bugfix, jangan menambahkan dev-awalan di nama cabang Anda, tetapi di composer Anda. Anda harus menambahkannya. File komposer Anda akan terlihat seperti:

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

1
Ini adalah penjelasan yang cerdik dan jelas bagi saya! Terima kasih !
Dominik

1
tetapi bagaimana jika itu garpu orang lain ? Lihat contoh di sini
abbood

Selain itu, namebidang dalam composer.jsonfile repositori bercabang Anda harus tetap sama dengan pemilik aslinya.
NecipAllef

11

Saya telah mencoba banyak pilihan tetapi setelah saya mendapatkan posting ini saya melihat cahaya dan hanya bekerja dengan sempurna.

Inilah yang harus Anda lakukan:

1- repositori Fork de

2- Buat cabang dan buat modifikasi yang diperlukan.

3- Tambahkan label repositori ke composer.json Anda

"repositories": [

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

4- Pada baris perintah di dalam proyek Anda, perlu garpu Anda seperti ini:

composer require vendor/packagename:dev-branchname

Dan Voilá !!

Anda memiliki versi garpu yang berfungsi



5

Jadi, ini tahun 2019, dan sebagian besar jawaban di sini sudah benar.

Jika Anda menemukan diri Anda, dalam situasi di mana Anda perlu meminta cabang tertentu dari garpu Anda (yang Anda buat), minta komposer mendaftar versi / tag yang tersedia terlebih dahulu. Ini menghemat banyak waktu saya.

Contoh lengkap dengan spatie/laravel-backuppaket.

Pertama, tambahkan repositorieskunci ke composer.json. Dengan url garpu Anda

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

Dapatkan versi / tag yang tersedia

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

Pilih versi yang Anda inginkan dari versionsdalam output terminal, lalu minta versi itu

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

2

Saya biasanya menambahkan simpul "dist" ke definisi paket. Saya tidak pernah memiliki masalah menggunakannya dengan cara ini.

Saya tidak ingat dari mana saya mendapatkan trik ini, untuk penjelasan lebih lanjut.

{
    "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": "*"
    }
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.