Jadi, saya menikmati menggunakan installer Magento Composer hackathon, tapi saya berjuang untuk memahami bagaimana orang lain menggunakannya dalam kaitannya dengan layanan penempatan. Saat ini saya menggunakan DeployHQ, dan ya, saya dapat mengaturnya untuk menggunakan dan menjalankan komposer ketika ada pembaruan untuk repo, tetapi ini tidak masuk akal bagi saya sekarang.
Repo komposer utama saya, yang hanya berisi file json dari semua paket yang ingin saya sertakan dalam build saya, hanya akan diperbarui ketika saya menambahkan paket baru ke daftar.
Ketika saya memperbarui tema saya, atau ekstensi khusus (yang direferensikan dalam file json), tidak ada "kait" untuk memperbarui layanan penempatan saya. Jadi saya harus masuk ke server saya dan secara manual menjalankan komposer (yang membuat situs turun sampai selesai).
Jadi bagaimana orang lain mengelola ini? Haruskah saya hanya menjalankan komposer secara lokal dan memasukkan folder vendor di repo saya?
Setiap jawaban akan sangat dihargai.
sumber
Jawaban:
Saya telah membuat struktur di agensi kami yang memungkinkan kami menggunakan Komposer untuk menyebarkan semua situs Magento kami. Ini mungkin sedikit berlebihan untuk pertanyaan yang Anda ajukan, tetapi inilah gambaran dasar strukturnya:
Struktur repositori
Di bawah ini adalah struktur folder dari repositori 'induk'. Ini berisi komposer JSON dan file kunci dan konfigurasi lain yang diperlukan untuk penyebaran.
code/magento
)index.php
dan folder lain seperti media dan kesalahan duduk di dalam folder publik di luar akar MagentoPenyebaran
composer install
selama proses pembangunan dan menyebarkan semua modul ke dalam submodule Magento.Ini masih bukan pengaturan integrasi berkelanjutan tetapi saya merasa ini berfungsi dengan baik untuk situs Magento. Jangan ragu untuk mengirim saya pesan jika Anda membutuhkan saran lain yang khusus untuk pengaturan Anda.
sumber
Metode lain adalah dengan menggunakan strategi penyebaran salinan magento hackathons, yang terlihat seperti ini di file composer.json Anda:
Menggunakan metode di atas menyalin file yang diinstal dari vendor ke instalasi yang sebenarnya, memungkinkan untuk dilakukan di Git dan digunakan seperti biasa, tanpa harus melakukan pemasangan komposer.
Saya bukan penggemar berat menarik dari repositori pihak ketiga ketika Anda akan melakukan penyebaran langsung, dan menjadi tergantung pada repositori pihak ketiga agak berisiko, kecuali Anda memiliki semacam cache proxy untuk jaringan Anda .
Baca artikel ini dan itu akan memberi Anda perspektif yang berbeda: http://www.letscodejavascript.com/v3/blog/2014/03/the_npm_debacle
Pada dasarnya, NPM turun (semacam ..) dan sistem pembangunan semua orang berhenti bekerja (untuk penyebaran kritis!) Karena mereka langsung bergantung pada NPM. (NPM seperti Packagist untuk Javascript, kecuali bahwa NPM sebenarnya meng-host file dan Packagist hanya menunjuk ke repositori modul Github - koreksi saya jika saya salah)
sunting: hanya respon red fschmengler .. Ini adalah penjabaran dari pendekatan pertamanya
sumber
Penting untuk dipahami bahwa Komposer bukanlah alat penyebaran, tetapi alat pengembangan.
Ada beberapa pendekatan berbeda tentang cara mempersiapkan penyebaran dengan semua dependensi:
composer install
dan membuat arsip dengan hasilnya, yang dapat Anda gunakan berulang untuk sistem target yang berbedacomposer install
di server dan kemudian beralih symlink seperti yang disarankan oleh @ jharrison.au adalah variasi dari yang iniSelain itu, saya tidak merekomendasikan menggunakan komposer untuk setiap modul tunggal dan hanya menyimpan
composer.json
dancomposer.lock
dalam repositori proyek. Ini berlebihan dan membuat pembangunan menjadi rumit. Masuk akal untuk kode yang digunakan kembali pada beberapa proyek tetapi mengapa Anda memasukkan kode spesifik proyek ke dalam repositori terpisah?Struktur proyek saya saat ini terlihat seperti ini (menggunakan installer komposer alternatif oleh AOE ):
src
berisi semua modul khusus proyek. Komposer juga memasang modul Magento lainnya di sini.modman
tautan kesrc
sehingga modman dapat menangani symlinking dengan mudahwww
adalah webroot. Komposer memasang inti Magento di siniDengan cara ini saya memasukkan modul eksternal ke dalam repositori. Jika Anda memilih untuk tidak melakukannya, sesuaikan seperti ini:
src
berisi semua modul khusus proyek. Untuk memasukkannya ke dalam.modman
sehingga modman membuat symlink, gunakanmodman link
.modman
adalah di.gitignore
. Komposer memasang modul Magento di siniwww
adalah webroot. Komposer memasang inti Magento di sinisumber