Bagaimana cara memperpanjang konfigurasi Magento 2 Grunt default tanpa menyentuh / mengedit file inti seperti Gruntfile.js
dan dev/tools/grunt/configs/themes.js
?
Membuat tema baru untuk Magento 2 bisa menjadi tantangan bahkan memiliki pengalaman dengan Magento sebelumnya. Pengembang yang layak tidak akan mengubah file inti Magento, tetapi membuat "pembungkus" sebagai gantinya, jadi di masa depan menginstal tambalan dan melakukan pembaruan Anda tidak akan memiliki situasi ketika semua perubahan Anda ditimpa atau digabungkan secara tidak benar.
Perpanjang file Gruntfile.js dan themes.js
Katakanlah Anda membuat tema baru dan seperti yang kita ketahui dari dokumentasi Magento 2 docs Anda perlu mengubah file dev/tools/grunt/configs/themes.js
menambahkan tema Anda ke daftar, sehingga Grunt dapat mengkompilasi / symlink / menyalin css / lebih sedikit file ke dalam pub/static
folder.
Langkah1: Buat /dev/tools/grunt/configs/themes.yourthemename.js
file yang memperluas themes.js
file default sebagai
'use strict';
var defaultThemes = require('./themes'),
_ = require('underscore');
var yourTheme = {
yourthemename: {
area: 'frontend',
name: '<vendor>/<yourthemename>',
locale: 'en_US',
files: [
'css/main',
],
dsl: 'less'
}
};
module.exports = _.extend(defaultThemes, yourTheme);
Step2: Perpanjang Gruntfile.js
dengan fileGruntfile.yourthemename.js
'use strict';
var defaultGruntfile = require('./Gruntfile'),
_ = require('underscore');
var yourthemeGruntfile = {};
yourthemeGruntfile.themes = require('./dev/tools/grunt/configs/themes.yourthemename');
module.exports = _.extend(defaultGruntfile, yourthemeGruntfile);
Langkah 3: Sekarang Anda dapat menjalankan tugas Grunt untuk tema Anda seperti:
grunt --gruntfile=Gruntfile.yourthemename.js clean:yourthemename
grunt --gruntfile=Gruntfile.yourthemename.js exec:yourthemename
grunt --gruntfile=Gruntfile.yourthemename.js less:yourthemename
grunt --gruntfile=Gruntfile.yourthemename.js watch:yourthemename
exec:yourthemename
apakah Anda mendapatkanWarning: Required config property "clean.yourthemename" missing. Used --force, continuing.
?? Sungguh aneh saya bisa membersihkan tema saya denganclean:yourthemename
perintah tetapi saya merasaexec
perintah harus melakukan ini tanpa kesalahan.dev/tools/grunt/configs
melakukanrequire('./themes')
, contoh adaclean.js
danexec.js
di dalam direktori konfigurasi. Yang membuat saya percaya bahwa file-file ini kemudian akan hilang dari tema baru yang ditambahkanthemes.yourthemename.js
. Pengaturan ini masih berfungsi, saya tidak dapat menentukan penyebabRequired config property "clean.yourthemename" missing.
kesalahan saya ...Ketika solusi Jev Mokrousov tidak cocok untuk Anda, ada dua alternatif yang bisa Anda coba:
Perintah pemasangan pos komposer
Selama instalasi
magento/magento2-base
paket, fileGruntfile.js
dan folderdev/tools
akan disalin dari paket ke folder root Anda menimpa file yang ada, yang disebabkan olehcomposer.json
pemetaan basis Magento2 (lihatvendor/magento/magento2-base/composer.json
di proyek Anda):Anda dapat menempatkan versi Anda
Gruntfile.js
dandev/tools/grunt/configs/themes.js
di suatu tempat (kami telah menempatkan mereka di dalam struktur direktori build kami dibuild/tools/grunt/
).Sekarang ada kemungkinan untuk menambahkan perintah atau skrip tambahan sebelum atau setelah peristiwa Komponis tertentu. Kita bisa terhubung ke
post-install-cmd
acara Composer untuk menyalin versi file-file ini di atas file inti Magento. Anda harus menambahkan ini ke proyek Andacomposer.json
:Ini akan menunjukkan kepada Anda:
Tema sebagai modul Komposer
Sama seperti
magento/magento2-base
paket ini memetakan file ke root proyek (seperti dijelaskan di atas) Anda juga dapat melakukan ini sendiri.Anda dapat menempatkan tema Anda dalam paket Komposer yang terpisah. Anda harus membuat repositori terpisah untuk ini. Dokumen Magento sudah menggambarkan proses ini: lihat "Jadikan tema Anda paket Penggubah"
Sekarang tambahkan ini di
composer.json
file tema Anda :Pastikan jalur pertama menunjuk ke lokasi yang tepat di dalam paket tema Anda. Jalur relatif dari lokasi
composer.json
file tema .Peringatan:
Kedua solusi tersebut menimpa file inti. Ini dapat menyebabkan masalah tambalan atau peningkatan. Saat menambal dan meningkatkan, Anda harus selalu memeriksa apa yang akan diubah dan menerapkan perubahan itu pada salinan file inti ini.
sumber
Karena saya yakin banyak orang akan menemukan diri mereka memperluas tema induk daripada sepenuhnya membangun tema dari awal, berikut adalah beberapa sintaks yang sedikit berbeda yang ditawarkan untuk
themes.yourThemeName.js
file Anda . Daripada sepenuhnya mendefinisikan dari awal konfigurasi untuk tema kita, kita mewarisinya dari induknya, dan kemudian menambahkan / memodifikasi apa yang baru / berbeda.Dalam contoh ini kita mewarisi dari konfigurasi blank, mengatur nama tema kita, dan menambahkan file root tambahan tema kita. Manfaatnya adalah Anda tidak harus secara khusus mendeklarasikan semua file dari tema induk. Bagi orang-orang yang memperpanjang tema orang tua yang menerima pembaruan secara berkala, ini bisa bermanfaat. (Menggunakan kosong sebagai skenario contoh saya di sini mungkin bukan situasi yang paling berlaku, tetapi konsep yang diterapkan di sini adalah yang penting).
sumber