Saya kira Anda menggunakan drupal-composer / drupal-project sebagai dasar untuk proyek Anda. Jika tidak, lihat proyek itu, dan bandingkan dengan proyek Anda.
Juga, Anda mengatakan bahwa Anda ingin menggunakan komposer untuk mengelola dependensi Drupal 8, jadi saya berasumsi bahwa Anda telah memilih modul contrib Anda composer require drupal/devel
daripada drush dl devel
.
Jika Anda melakukan semua hal ini, maka Anda harus menggunakan composer update
untuk memperbarui inti Drupal dan semua modul contrib Anda. Selama Anda menyimpan composer.lock
file Anda , composer install
tidak boleh mengubah versi dependensi Anda. Anda seharusnya tidak menggunakannya drush pm-update
sama sekali. Seharusnya tidak masalah bagi Anda apakah file dalam core
direktori diperbarui atau tidak, karena direktori ini dikelola oleh Komposer. Anda lebih baik tidak melakukan direktori yang dikelola komposer ke repositori Anda, meskipun Anda bisa jika mau.
Tentu saja, Anda harus menjalankan drush updatedb
setiap kali composer update
mengganti inti Drupal atau modul apa pun.
Untuk menghindari mendapatkan versi pengembangan, atur stabilitas minimum Anda menjadi 'beta' di file composer.json Anda menggunakan flag stabilitas Komposer .
Jika Anda menggunakan drupal-composer / drupal-project untuk mengelola situs Anda, maka semua file tingkat root seperti README.txt, .htaccess dan index.html menjadi milik proyek Anda. Itu berarti Anda harus memeriksanya di repositori git Anda; Komposer tidak akan memperbaruinya, Anda harus memperbaruinya sendiri ketika mereka berubah. File-file ini jarang berubah, tetapi drupal-composer / drupal-project memiliki skrip untuk memperbarui file-file ini .
drush updatedb
setiap kali pembaruan komposer menggantikan inti Drupal atau modul apa pun." - terima kasih dan jika Anda telah menginstal drupal pada awalnya dengan langkah-langkah ini, drupal.org/node/2471553 maka Anda perlu path lengkap ke drupal tertentu dengan Drupal 8 Anda instal (karena mereka dulu menjalankan install sebagai langkah terakhir). Pertama-tama Anda perlu cd ke web dan sekali di / web perintah untuk memperbarui db dengan path lengkap karena itu akan menjadi:../vendor/drush/drush/drush updatedb
(Saya menemukan ini berfungsi).Berikut ini adalah OK untuk patch rilis 8.4.x> 8.4.y , tapi tidak OK untuk rilis minor 8.4.x> 8.5.x . Lompat ke UPDATE 3 di bawah untuk apa yang saya yakini sebagai "jawaban" untuk pembaruan rilis minor.
1- Cadangkan semua file yang datang dengan Drupal yang telah Anda modifikasi, seperti .htaccess, robots.txt, dll. (Kedua file tersebut adalah yang paling sering diubah).
2- [Saya diberitahu hapus file kunci salah, lihat PEMBARUAN di bawah ini]
Hapus file composer.lock (di folder tingkat atas situs Anda). Ini akan dibuat ulang pada langkah 5.3- Periksa composer.json Anda (di folder tingkat atas situs Anda) dan pastikan bahwa "drupal: core" ada di bagian yang diperlukan dan bukan di bagian ganti, misalnya
tidak
Jika "drupal / core" ada di bagian ganti, pindahkan ke bagian yang diperlukan dan hapus bagian ganti. Jika ada entri lain di bagian ganti, cukup hapus "drupal / core" bukan seluruh bagian ganti - tapi saya pikir "drupal / inti" biasanya satu-satunya yang ada di sana.
Masukkan versi apa yang ingin Anda perbarui di "drupal / core", contoh:
"drupal / core": "^ 8.5" - akan memperbarui ke versi 8.5 terbaru. "drupal / core": "8.4.6" - akan diperbarui ke versi 8.4.6.
5- Jalankan ini (di folder tingkat atas situs Anda):
6- Jika tidak ada kesalahan, maka lakukan yang biasa, jalankan pembaruan dan hapus cache:
Atau jika tidak menggunakan drush, buka /update.php untuk menjalankan pembaruan, lalu ke admin / config / development / performance dan tekan tombol "Bersihkan semua cache".
7- Jika Anda telah membuat cadangan file di langkah pertama (.htaccess, robots.txt) masukkan kembali. Tetapi periksa untuk melihat apakah Drupal membuat pembaruan untuk file-file itu dan menambahkan perubahan itu ke Anda.
DIBUAT
Jika ada kesalahan dengan pembaruan komposer di langkah 5, biasanya karena masalah dengan versi barang di folder vendor.
Ini adalah pos yang bagus dalam menangani masalah-masalah seperti: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update dan baca 2 posting Jeff lainnya tentang Drupal dan Komposer untuk mendapatkan lebih banyak pengetahuan tentang itu.
Saya diberitahu oleh 2 orang di Twitter bahwa komposer. Kunci tidak boleh dihapus (Langkah 2 di atas). The
composer update drupal/core --with-dependencies
perintah recreates file kunci lagian.Dalam pengujian metode ini saya menemukan itu berfungsi dengan baik untuk 8.4.3> 8.4.6 (misalnya) tetapi saya mendapatkan kesalahan untuk 8.4.6> 8.5.x. Akan melaporkan kembali ketika saya mengetahuinya.
Contoh kesalahan:
Posting ini oleh Jeff Geerling membahas masalah serupa, tetapi sejauh ini tidak berhasil bagi saya: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update
Jadi ... satu-satunya hal yang tampaknya bekerja untuk saya untuk 8.4.x> 8.5.x adalah "opsi nuklir" yang tampaknya banyak orang lain gunakan, yang dijalankan
composer update
.Saya kira itu OK asalkan Anda yakin tentang versi modul di composer.json. Mungkin kita harus mengunci mereka ke versi saat ini. Sebagai contoh:
daripada:
Tetapi apakah jawaban yang benar?
OK jawaban yang tampaknya ada di mana-mana adalah melakukan "opsi nuklir":
A. Hapus
/vendor
folder.B. Jalankan
composer update
dan cukup perbarui modul Anda bersama dengan inti. Atau, kunci versi modulcomposer.json
jika Anda tidak ingin memperbaruinya.Satu orang di Drupal Slack mengatakan "seluruh filosofi Komposer adalah bahwa Anda harus selalu memperbarui paket, sesering mungkin" . Dikemas termasuk modul saya pikir. Jadi masuk akal kurasa.
Setelah saya dapatkan dari 8.4.6 ke 8.5.0, ini bekerja dengan baik untuk mendapatkan dari 8.5.0 ke 8.5.1
composer update drupal/core --with-dependencies
seperti yang dilakukan untuk 8.4.3 hingga 8.4.6.Saya mulai menyimpulkan bahwa "jawabannya" adalah menghapus folder vendor dan file composer.lock, kemudian menggunakan
composer update
baik-baik saja, dan orang hanya perlu memastikan nomor versi untuk dependensi dalam file composer.json adalah apa yang Anda inginkan . Bukan masalah besar untuk mengelola versi modul yang ingin Anda pertahankan atau perbaruicomposer.json
.Sebagai contoh:
"drupal/admin_toolbar": "1.18",
berarti tetap dengan 1,18"drupal/admin_toolbar": "^1.18",
berarti maju dan perbarui tetapi dalam 1.x (bukan 2.x)Ini didukung oleh komentar (Jenderal Redneck) pada posting ini: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update "Salah satu hal yang saya miliki ditemukan ketika saya bekerja dalam dukungan adalah bahwa mengunci versi modul dan inti adalah ide yang baik sehingga Anda BISA thermonuke hal ketika Anda inginkan karena ada kalanya beberapa plugin yang berbeda bahkan tidak ingin berperilaku dengan benar. "
Ngomong-ngomong, file composer.lock tidak membantu
composer update
karena terhapus (berbeda dengancomposer install
tempat dia mengunci file dibaca):Menjalankan
composer install
akan:composer.lock
adacomposer update
untuk membuatnyacomposer.lock
ada, instal versi yang ditentukan dari file kunciMenjalankan
composer update
akan:composer.json
composer.lock
untuk mencerminkan versi terbaru yang diinstalRef: https://www.engineyard.com/blog/composer-its-all-about-the-lock-file
Saya melihat ini disebutkan di atas: https://github.com/drupal-composer/drupal-project . Saya telah menggunakan itu dan itu baik-baik saja tetapi itu bukan persyaratan untuk menggunakan Komposer dengan Drupal. Ini membingungkan karena itu semacam "terdengar" seperti dari namanya. Ketika saya pertama kali mulai dengan Drupal 8 saya pikir itu diperlukan, jadi buat situs D8 pertama saya dengan itu, berpikir itu adalah praktik terbaik.
Itu "versi" dari Drupal telah dia docroot di folder / web, bukan di folder atas proyek. Juga ada banyak hal yang ditambahkan ke .gitignore dibandingkan dengan Drupal normal:
Jadi, versi Drupal ini benar-benar lebih ditujukan untuk situs yang menggunakan integrasi berkelanjutan untuk melakukan pembangunan Drupal baru pada setiap penyebaran, menggunakan pemasangan komposer. Jika Anda menggunakan metode yang lebih normal, Anda jelas harus mengkomit semua hal di atas ke repositori git Anda atau itu tidak akan disebarkan ke server Anda [1], dan semua itu diperlukan agar Drupal dapat berjalan.
[1] jika git terlibat dengan penyebaran Anda - jika Anda menggunakan SFTP, abaikan ini.
sumber
composer update drupal/core symfony/config webflo/drupal-core-strict --with-dependencies
belum pernah gagal saya. Bekerja lebih dari beberapa versi minor, misalnya 8.3 -> 8.6Menggunakan paket drupal / core pada packagist.org kita sebenarnya dapat mengelola core, modul contrib (, tema dan profil) dan vendor lainnya melalui komposer.
Saya sudah menyiapkan file-file berikut di direktori root saya dan dieksekusi
composer install
composer.json
post_install.sh
Nikmati :)
sumber
Ya, Anda dapat mengelola inti Drupal dengan komposer. Ada beberapa hal yang perlu diperhatikan.
Anda mungkin akan mendapatkan batas waktu karena sejumlah item yang harus dijalankan oleh komposer, terutama jika Anda menjalankan di VM lokal. Jika Anda menjalankan,
composer install
Anda kemungkinan akan mendapatkan kesalahan komposer:Pastikan Anda menggunakan wajib
Tambahkan juga ekstensi ke batas waktu dalam konfigurasi
Juga jika itu tidak berhasil, Anda dapat menjalankan pemasangan komposer dari luar SSH di VM Anda .
Ini akan melewati batas waktu pembagian NFS dan membongkar Drupal di tempat yang tepat.
sumber
"drupal / core": "~ 8.0-beta14" berarti setiap rilis yang lebih besar dari 8.0-beta14 dan kurang dari 9! Anda ingin menghapus tilde untuk menguncinya ke rilis tertentu. Kemudian pastikan untuk memperbarui file kunci Anda dengan menjalankan komposer, dan pada sistem target gunakan instal komposer.
Cara mudah untuk memulai adalah membangun basis kode menggunakan https://github.com/drupal-composer/drupal-project .
Ketika kami perlu memperbarui sesuatu seperti memutakhirkan inti, Anda menjalankan "komposer" secara lokal. Ini akan memperbarui file composer.lock.
Saat pengembang lain mundur, atau dalam skrip penerapan, Anda akan menjalankan "pemasangan komposer", yang menggunakan file kunci.
Garis di composer kami. Json untuk inti Drupal adalah:
The tilde () berarti setiap rilis dalam angka 8 (tetapi tidak 9) .
Jika Anda ingin menguncinya ke versi tertentu, Anda tidak harus menggunakan tilde.
kemudian jalankan "komposer" secara lokal, komit file composer.json dan composer.lock, dan kemudian jalankan "komposer instal" pada instalasi lain setelah menarik basis kode.
sumber