de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 Banana
Banana
Question

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.

46 2013-07-02T12:54:33+00:00 4
Jeff Puckett
Jeff Puckett
Pertanyaan edit 11 Januari 2018 в 5:53
Pemrograman
git
composer-php
Mahmoud Zalt
Mahmoud Zalt
26 Mei 2015 в 11:30
2015-05-26T11:30:01+00:00
Lebih
Sumber
Sunting
#19809223

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”                   << referencing the other local package
    }
  },
  "autoload-dev": {
    "psr-4": {
      "Mahmoudz\\Project\\Tests\\": "tests"
    }
  },

Keuntungan:

  • anda tidak touche vendor directory (menjalankan composer update oleh kesalahan tidak akan menimpa perubahan lokal anda)
  • anda tidak perlu paket anda akan di packagist untuk menggunakannya
  • anda bekerja di satu tempat (lokal paket) dan perubahan secara otomatis dimuat di proyek utama Kerugian:
  • anda tidak dapat mempublikasikan komposer.json pada produksi (kebutuhan editing sebelum penerbitan untuk meminta real paket)

Metode 2: (repositori lokal)

Download lokal paket dari repositori lokal.

paket lokal:

  1. inisialisasi git dalam paket (bahkan jika anda tidak ingin menggunakan itu - tidak perlu melakukan apa-apa)
  2. tambahkan komposer.file json. Dalam file tersebut pastikan anda memiliki yang berikut:

"": "vendor-nama paket-nama",

"autoload": { ... // gunakan metode mana yang anda inginkan, tapi pastikan itu dimuat dengan benar

"minimum-stabilitas": "dev"

  1. komposer dump-autoload

proyek utama:

  1. mengedit komposer.json berisi berikut:

"repositori": [ { "type": "kamu", "url": "/full/path/ke/direktori/lokal/paket/paket-nama" } ], "memerlukan": { "vendor-nama/nama-paket": "dev-master" },

  1. composer update vendor-nama/nama-paket
  2. sekarang periksa vendor directory anda harus melihat vendor-nama/nama - paket

CATATAN: setiap kali anda membuat perubahan di lokal paket (bukan penjual) yang anda butuhkan untuk git commit maka anda dapat composer update proyek utama, maka akan mendapatkan salinan terbaru dari repo utama proyek direktori vendor.

Keuntungan:

  • anda tidak menyentuh vendor directory (menjalankan composer update oleh kesalahan tidak akan menimpa perubahan lokal anda) - anda tidak perlu paket anda akan di packagist untuk menggunakannya Kerugian:
  • anda harus terus melakukan perubahan (dalam paket lokal) dan kemudian menjalankan composer update di proyek utama
  • anda tidak dapat mempublikasikan komposer.json pada produksi (kebutuhan editing sebelum penerbitan untuk meminta real paket)
Glen Solsberry
Glen Solsberry
Jawaban edit 12 Juli 2019 в 2:44
44
0
 Danack
Danack
2 Juli 2013 в 2:17
2013-07-02T14:17:30+00:00
Lebih
Sumber
Sunting
#19809221

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.

24
0
 Max
Max
12 Juli 2014 в 10:43
2014-07-12T10:43:29+00:00
Lebih
Sumber
Sunting
#19809222

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

Seperti ini:

"repositories": [
    {
        "type": "vcs",
        "url" : "d:/workspaces/util"
    }
],
3
0
Friendly Code
Friendly Code
5 September 2019 в 10:19
2019-09-05T10:19:56+00:00
Lebih
Sumber
Sunting
#19809224

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
      }
2
0
Related communities 5
Telegram Bot PHP - Indonesia
Telegram Bot PHP - Indonesia
10 816 pengguna
Pengen tau ada bot apa aja? Cek @botkoleksi Grup diskusi tentang pembuatan bot telegram menggunakan bahasa pemrograman PHP. Bahasa Lain, Tetap welcome. Diskusi bot lainnya @botIndonesia Ngobrol bebas di @indonesiabicara
Buka telegram
PHP Indonesia Community
PHP Indonesia Community
3 324 pengguna
Grup telegram yang membahas secara khusus seputar progamming php. Sarana untuk saling berkomunikasi, berbagi tips dan trik, tutorial, loker serta tanya jawab.
Buka telegram
Programmer PHP Indonesia
Programmer PHP Indonesia
973 pengguna
Buka telegram
PHP INDONESIA JOGLORAYA
PHP INDONESIA JOGLORAYA
650 pengguna
PHP INDONESIA Regional Jogja - Solo Raya @phpjogloraya
Buka telegram
PHP HTML Indonesia
PHP HTML Indonesia
59 pengguna
~ Menerima Jasa Pembuatan Website untuk : Tugas & Instansi 💻 ~ Forum Diskusi Belajar Bersama ✅ ~ Promosi Jasa Minimal 1x Sehari ✅ ~ Dilarang Berbicara Kotor 🚫 ^ Other Grup : Whatsapp Group : Chat Admin untuk masuk ke Grup Whatsapp ^^
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Elena Nudel
Terdaftar 8 jam yang lalu
2
firdaus faizal
Terdaftar 9 jam yang lalu
3
Виталий Теслюк
Terdaftar 2 hari yang lalu
4
shokir qochqorov
Terdaftar 2 hari yang lalu
5
Roxana Elizabeth CASTILLO Avalos
Terdaftar 1 minggu yang lalu
ID
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi