Migrasi Nama Package
Composer package berganti nama dari panda/panel menjadi chocoalano/panel. Bagian lain tidak berubah: PHP namespace, file config, publish tag, route name, dan Artisan command tetap sama. Dokumen ini berisi daftar perubahan yang perlu dilakukan oleh aplikasi yang sebelumnya menginstal package dengan nama lama, serta satu konsekuensi behavior yang pernah muncul akibat proses rename tersebut.
Proses Migrasi
composer remove panda/panel
composer require chocoalano/panel
php artisan panel:plugins # confirm every plugin still registers
php artisan test2
3
4
Atau ubah composer.json secara langsung:
"require": {
"chocoalano/panel": "^0.1"
}2
3
Lalu jalankan:
composer update chocoalano/panelTidak ada perubahan pada published file, sehingga tidak perlu melakukan publish ulang maupun rebuild frontend.
Bagian yang Tidak Berubah
| Value | |
|---|---|
| PHP namespace | PandaPanel\ |
| Service provider | PandaPanel\PandaPanelServiceProvider |
| Facade alias | PandaPanel → PandaPanel\Facades\PandaPanel |
| Config file | config/panda-panel.php |
| Config keys | panels, register_routes, register_web_middleware, register_guest_redirect, home_redirect, load_migrations, integrations, frontend |
| Publish tags | panda-panel, panda-panel-config, panda-panel-assets, panda-panel-migrations, panda-panel-stubs |
| Artisan commands | panel:install, panel:user, panel:assets, panel:cache, panel:clear, panel:icons, panel:plugins, panel:publish, serta lima generator make:panel* |
| Route names | panel.{id}.* |
| Published paths | resources/js/{panel,pages,components,composables,lib,types}, resources/css/panda-panel.css |
| Nama project | Panda Panel |
Karena itu source code aplikasi tidak membutuhkan perubahan. Tidak ada use statement yang perlu diubah, tidak ada rename config, migration, atau template. Yang berubah hanya key package pada bagian require Composer.
Bagian yang Berubah
| Sebelum | Sesudah | |
|---|---|---|
| Composer package | panda/panel | chocoalano/panel |
| Vendor directory | vendor/panda/panel | vendor/chocoalano/panel |
| npm package name | @panda/panel | @chocoalano/panel |
Nama npm digunakan untuk development toolchain repository ini. Package tersebut memiliki private: true dan tidak pernah dipublish ke npm. Component masuk ke aplikasi melalui vendor:publish, bukan melalui npm package install. Jadi kecuali Anda meng-clone repository Panda Panel sendiri, nama npm tersebut bukan dependency yang digunakan project Anda.
Perubahan vendor directory penting terutama ketika membandingkan asset conflict:
php artisan panel:assets
# CONFLICT resources/js/panel/tables/DataTable.vue
diff resources/js/panel/tables/DataTable.vue vendor/chocoalano/panel/resources/js/panel/tables/DataTable.vue2
3
4
Jika script, CI, .gitignore, atau editor configuration Anda menuliskan vendor/panda/panel secara eksplisit, ubah ke path vendor yang baru.
Satu Konsekuensi Behavior dari Rename
PandaPanel\Plugins\PluginCompatibility membaca versi framework berdasarkan nama package yang dikenal Composer:
private const PACKAGE = 'chocoalano/panel';Saat rename dilakukan, constant tersebut sempat tertinggal sebagai panda-panel. InstalledVersions::getPrettyVersion() melempar exception untuk package yang tidak ada pada instalasi. Class compatibility menganggap exception tersebut sebagai kondisi "framework tidak dipasang sebagai Composer package" lalu mengembalikan null. Versi null menyebabkan seluruh constraint requiresPanel dilewati.
Artinya compatibility check masih ada di source, tetapi pada praktiknya tidak pernah menolak plugin yang tidak kompatibel.
Masalah tersebut sudah diperbaiki. Test sekarang membandingkan constant package dengan name pada composer.json, sehingga rename di masa depan tidak dapat mematikan check dengan cara yang sama:
$reflection = new ReflectionClass(PluginCompatibility::class);
expect($reflection->getConstant('PACKAGE'))
->toBe(json_decode(file_get_contents(base_path('composer.json')), true)['name']);2
3
4
Dampaknya untuk aplikasi Anda: plugin dengan constraint requiresPanel yang tidak dipenuhi instalasi sekarang akan menyebut incompatibility tersebut saat plugin diregistrasikan. Sebelumnya plugin dapat register tanpa warning lalu gagal lebih jauh dengan error seperti Call to undefined method Panel::whatever().
use PandaPanel\Plugins\PluginMetadata;
public function metadata(): PluginMetadata
{
return new PluginMetadata(
name: 'Billing',
package: 'acme/panda-billing', // the plugin's own package — unaffected by the rename
requiresPanel: '^1.2', // a constraint against chocoalano/panel — now checked
);
}2
3
4
5
6
7
8
9
10
Periksa plugin yang terpasang sebelum melakukan upgrade:
php artisan panel:plugins
php artisan panel:plugins --panel=admin2
Tiga kondisi masih sengaja dilewati, dan semuanya memang berarti tidak ada constraint yang bisa dievaluasi: plugin tidak mendeklarasikan constraint, framework tidak dipasang sebagai Composer package (misalnya test suite repository ini sendiri), atau framework menggunakan branch alias seperti dev-main yang tidak dapat dibandingkan terhadap semantic version constraint.
Jika Belum Dapat Upgrade
Tidak ada yang memaksa existing lockfile untuk langsung menggunakan nama baru. Instalasi panda/panel yang sudah ada tetap berjalan dari vendor/ sebagaimana sebelumnya. Namun Anda tidak akan mendapatkan release apa pun yang dipublish setelah rename, karena release baru hanya tersedia dengan nama chocoalano/panel. Tidak ada metapackage yang mengalias nama lama ke nama baru.
Catatan
- Repository dan framework tetap bernama Panda Panel. Yang berubah hanya Composer vendor namespace, bukan nama project.
config/panda-panel.phptetap menggunakan nama yang sama. Mengubahnya akan merusak seluruh pemanggilanconfig('panda-panel.*')tanpa memberikan manfaat nyata.- Published frontend di
resources/jstidak mereferensikan Composer package name, sehinggapanel:assetstidak melaporkan perubahan dan frontend tidak perlu dibuild ulang hanya karena rename. composer why chocoalano/panelmerupakan cara tercepat memastikan nama package yang benar-benar sedang di-resolve project, terutama pada repository yang history-nya memuat nama lama dan baru.
Lihat Juga
- Installation — instalasi menggunakan nama package terbaru
- Upgrading: package name migration
- Upgrading: upgrade guide, breaking changes
- Plugins: compatibility, metadata
- CLI: panel:plugins, panel:assets
- Troubleshooting: Packagist