Saya memiliki beberapa perpustakaan [Foo and Bar] yang saya kembangkan bersama, tetapi secara teknis masih merupakan hal yang terpisah. Sebelumnya saya baru saja mendefinisikan ulang pemuat otomatis menjadi suka "Foo\\": "../Foo/src"
, tetapi sekarang saya telah menambahkan ketergantungan Guzzle ke Foo, Bar membalik tutupnya karena itu bukan salah satu dari ketergantungannya.
Struktur direktori:
/home/user/src/
Foo/
src/
FooClient.php
composer.json
Bar/
src/
BarClient.php
composer.json
Pernyataan Pemuatan Otomatis Teoretis: [di Bar / composer.json]
"require": {
"local": "../Foo/composer.json"
}
Kode contoh:
require('vendor/autoload.php');
$f = new \Bar\BarClient(new \Foo\FooClient());
Bagaimana saya bisa mengatasi ini tanpa menyiapkan repo Komposer lokal? Saya ingin mempertahankan ini sebagai paket terpisah, hanya yang satu memerlukan yang lain, dan untuk itu memproses ketergantungan yang lain.
edit pasca-jawaban:
Berkat infomaniak, saya telah melakukan hal berikut:
Menginisialisasi git repo:
cd ~/src/Foo && git init && echo -e "vendor\ncomposer.lock" > .gitignore && git add ./ && git commit -m "Initial Commit"
Menambahkan konfigurasi komposer:
"require": {
"sammitch/foo": "dev-master"
},
"repositories": [{
"type": "vcs",
"url": "/home/sammitch/src/Foo"
}],
Lalu composer update
!
sammitch/foo
adalah nama paket dan secara harfiah tidak ada hubungannya dengan lokasinya. Akan membuat daftar paket yang tersedia berdasarkan repositori yang dikonfigurasi, dalam hal ini mengambil composer.json dari repo git lokal yang ditentukan, dan kemudian composer menangani sisanya. The sammitch/foo
paket disalin ke aplikasi saat ini vendor
folder sama dengan paket lain.