Komposer - menggunakan repositori lokal

Saya seorang Komposer pemula dan saya mencoba untuk membuat satu proyek tergantung satu sama lain, sementara kedua proyek hanya ada pada mesin lokal.

Komposer.json di perpustakaan saya proyek (ProjectA) adalah:

{
    "name" : "project/util",
    "type" : "library"
}

Saya diinisialisasi git di folder dasar dari proyek ini.

Saya komposer.json dalam proyek tergantung pada yang pertama (ProjectB):

{
    "repositories": [
        {
            "name" : "util", 
            "type" : "git",
            "url" : "/d/workspaces/util"
        }   
    ],

    "require": {
        "project/util" : "*"
    },
}

Ketika saya menjalankan composer install dari ProjectB, saya mendapatkan error berikut:

[RuntimeException] Gagal untuk mengkloning , tidak bisa membaca paket dari itu fatal: repository '' tidak ada

Saya berasumsi ada sesuatu yang salah dengan url repositori, tapi saya tidak yakin apa lagi untuk menulis di sana.

Autoload lokal paket menggunakan composer (tanpa pergi ke packagist setiap kali anda mengubah).

Ada banyak cara untuk melakukannya, aku akan mencakup 2 dari mereka:

Dalam semua kasus, kita memiliki 2 partai utama:

  • satu lokalpaket** (kode yang kita tidak ingin mempublikasikan di packagist untuk dapat autoload dalam proyek kami komposer).
  • the utama proyek (kode dasar yang perlu menggunakan kode lokal kode paket, dapat paket lain dan atau proyek).

Metode 1: (langsung namespace)

Buka proyek utama komposer.json file dan autoload lokal paket namespaces menggunakan metode apapun (PSR-4, PSR-0, ...).

contoh:

jika di composer.json lokal paket yang kami miliki:

  "autoload": {
    "psr-4": {
      “Local\\Pack\\": "library"
    }
  },
  "autoload-dev": {
    "psr-4": {
      "Local\\Pack\\Tests\\": "tests"
    }
  },

kemudian di composer.json dari proyek utama kita harus memiliki:


  "autoload": {
    "psr-4": {
      "Mahmoudz\\Project\\": "src",
      "Local\\Pack\\": "../path/to/local/pack/library”                   
Komentar (7)

Saya pikir anda've hanya punya sintaks yang salah. Jenis hanya harus VCS, dan kemudian komposer angka apa jenis VCS itu.

Jadi dalam proyek anda B, entri untuk repositori harus:

"repositories": [
    {
        "type": "vcs",
        "url" : "/d/workspaces/util"
    }
],

Anda don't harus nama apa perpustakaan yang tersedia di /d/ruang kerja/util. Komposer akan memindai komposer.json file di direktori tersebut dan tahu apa nama proyek yang tersedia di sana, dan menggunakan proyek dari direktori tersebut dalam preferensi untuk versi yang tercantum di packagist atau lainnya repositori.

Komentar (4)

Selain Danack's solusi: Mengubah jalan dari /d/ d:/ bekerja untuk saya.

Seperti ini:

"repositories": [
    {
        "type": "vcs",
        "url" : "d:/workspaces/util"
    }
],
Komentar (0)

Saya menemukan tutorial ini benar-benar berguna: https://johannespichler.com/developing-composer-packages-locally/ ketika aku menghadapi masalah dengan lokal produksi paket

Catatan symlink kondisi yang memungkinkan vendor folder yang akan symlink yang kemudian berarti anda tidak perlu lagi composer update setiap kali anda ingin melihat perubahan

"options": {
        "symlink": true
      }
Komentar (0)