重构Composer源管理工具CRM为Composer插件
下面由composer使用教程栏目为大家讲解如何重构Composer源管理工具CRM为Composer插件,希望对需要的朋友有所帮助!
CRM 是我很久之前为管理 composer 源做的一款命令行工具,旨在通过简单的命令在多个中国镜像切换,从而方便的管理它们;
那个时候我对 composer 插件了解不是特别多,所以做法比较也粗暴,底层通过执行 composer 命令来达到切换源的目的,在 linux 上用起来还好几乎没有特别的感知,但 win 上就会有些迟钝了。这也是显而易见的毕竟切换的时候相当于同时执行了多个命令;后来由于工作的机会了解了一下 composer 插件的开发,所以也就萌生了重构的念头;
与 1.x 版本相比,2.x 主要有下面一些改变:
元数据存储位置改变
在 1.x 版本中是在用户的 Home 文件夹下自定义的一个文件,用户所有的操作都最终持久化到这个 json 文件里去;新版则将元数据存储到了 composer 全局路径下的 config.json 里:
{ "config": { "_alias": { "val": "validate", "up": "update", "req-sf": "require symfony/event-dispatcher symfony/console", "req": "require", "i": "install" }, "_repositories": [{ "name": "composer", "url": "https://packagist.org", "homepage": "", "author": "" }, { "name": "phpcomposer", "url": "https://packagist.phpcomposer.com", "homepage": "", "author": "" }, { "name": "composer-proxy", "url": "https://packagist.composer-proxy.org", "homepage": "", "author": "" }, { "name": "laravel-china", "url": "https://packagist.laravel-china.org", "homepage": "", "author": "" }] }, "repositories": { "packagist": { "type": "composer", "url": "https://packagist.laravel-china.org" } } }
这个是 composer 维护的一个文件,我们借用了一下在里面占用了一个字段。这么做也更加符合了 composer 生态
命令的改变
1.x 版本是个独立入口应用,命令都是以 crm 关键词开始,比如 crm ls 之类的;在新版插件化里 crm 变成了一个命令提供者 (command provider) 角色,所以在新版我们使用 composer 入口;
新版用法
列出所有可使用的镜像
$ composer repo:ls composer https://packagist.org phpcomposer https://packagist.phpcomposer.com * composer-proxy https://packagist.composer-proxy.org laravel-china https://packagist.laravel-china.org
标 “*” 表示当前正在使用的源;
切换镜像
$ composer repo:use Please select your favorite registry (defaults to composer) [0] composer [1] phpcomposer [2] composer-proxy [3] laravel-china >
你也可以直接追加镜像名称来跳过选择
$ composer repo:use phpcomposer
添加选项 --current/-c 为当前项目切换源,默认是修改全局的源。
所有命令
执行下面命令查看
$ composer repo / ___| | _ \ / |/ | | | | |_| | / /| /| | | | | _ / / / |__/ | | | |___ | | \ \ / / | | \_____| |_| \_\ /_/ |_| Composer Repository Manager version 2.0.0 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands for the "repo" namespace: repo:add Creates a repository repo:ls List all available repositories repo:remove Remove a repository repo:use Change current repository
总结
除了用法上的改变,新版最显著的可能是速度上的提升;如有问题欢迎反馈,在帖子下留言或者到 github issues 发帖均可。
希望这个小工具会给大家在工作开发中带来方便。
附上项目地址: https://github.com/slince/composer-registr...
Atas ialah kandungan terperinci 重构Composer源管理工具CRM为Composer插件. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Laravel adalah rangka kerja PHP untuk membina aplikasi web yang mudah. Ia menyediakan pelbagai ciri yang kuat termasuk: Pemasangan: Pasang Laravel CLI secara global dengan komposer dan buat aplikasi dalam direktori projek. Routing: Tentukan hubungan antara URL dan pengendali dalam laluan/web.php. Lihat: Buat pandangan dalam sumber/pandangan untuk menjadikan antara muka aplikasi. Integrasi Pangkalan Data: Menyediakan integrasi keluar-of-the-box dengan pangkalan data seperti MySQL dan menggunakan penghijrahan untuk membuat dan mengubah suai jadual. Model dan Pengawal: Model mewakili entiti pangkalan data dan proses pengawal permintaan HTTP.

Saya mempunyai masalah yang sukar apabila mengerjakan projek dengan sejumlah besar entiti doktrin: Setiap kali entiti bersiri dan deserialized, prestasi menjadi sangat tidak cekap, mengakibatkan peningkatan yang signifikan dalam masa tindak balas sistem. Saya telah mencuba pelbagai kaedah pengoptimuman, tetapi ia tidak berfungsi dengan baik. Nasib baik, dengan menggunakan Sidus/Doctrine-Serializer-Bundle, saya berjaya menyelesaikan masalah ini, dengan ketara meningkatkan prestasi projek.

Apabila membangunkan laman web yang menggunakan CraftCMS, anda sering menghadapi masalah caching fail sumber, terutamanya apabila anda sering mengemas kini fail CSS dan JavaScript, versi lama fail mungkin masih di -cache oleh penyemak imbas, menyebabkan pengguna tidak melihat perubahan terkini dalam masa. Masalah ini bukan sahaja memberi kesan kepada pengalaman pengguna, tetapi juga meningkatkan kesukaran pembangunan dan debugging. Baru-baru ini, saya menghadapi masalah yang sama dalam projek saya, dan selepas beberapa penjelajahan, saya dapati plugin Wiejeben/Craft-Laravel-Mix, yang sempurna menyelesaikan masalah caching saya.

Apabila membangunkan laman web e-dagang, saya menghadapi masalah yang sukar: bagaimana menyediakan pengguna dengan cadangan produk yang diperibadikan. Pada mulanya, saya mencuba beberapa algoritma cadangan mudah, tetapi hasilnya tidak sesuai, dan kepuasan pengguna juga terjejas. Untuk meningkatkan ketepatan dan kecekapan sistem cadangan, saya memutuskan untuk menggunakan penyelesaian yang lebih profesional. Akhirnya, saya memasang Andres-Montanez/Cadangan-Bundle melalui komposer, yang bukan sahaja menyelesaikan masalah saya, tetapi juga meningkatkan prestasi sistem cadangan. Anda boleh belajar komposer melalui alamat berikut:

Apabila membangunkan platform e-dagang, adalah penting untuk memilih rangka kerja dan alat yang betul. Baru-baru ini, ketika saya cuba membina laman web e-dagang yang kaya dengan ciri-ciri, saya menghadapi masalah yang sukar: bagaimana dengan cepat membina platform e-dagang yang berskala dan berfungsi sepenuhnya. Saya mencuba pelbagai penyelesaian dan akhirnya memilih template projek lanjutan FECMALL (FECMALL/FBBCBASE-APP-Advanced). Dengan menggunakan komposer, proses ini menjadi sangat mudah dan cekap. Komposer dapat dipelajari melalui alamat berikut: Alamat Pembelajaran

Apabila membangunkan aplikasi Laravel, saya menghadapi masalah yang sama tetapi sukar: bagaimana untuk meningkatkan keselamatan akaun pengguna. Dengan peningkatan kerumitan serangan siber, perlindungan kata laluan tunggal tidak lagi cukup untuk memastikan keselamatan data pengguna. Saya mencuba beberapa kaedah, tetapi hasilnya tidak memuaskan. Akhirnya, saya memasang perpustakaan Wiebenieuwenhuis/Laravel-2FA melalui komposer dan berjaya menambah pengesahan dua faktor (2FA) ke aplikasi saya, sangat meningkatkan keselamatan.

Saya menghadapi masalah yang sukar apabila membangunkan aplikasi berasaskan simfoni: bagaimana untuk mengesahkan format data JSON dengan berkesan. Pada mulanya, saya cuba menggunakan kod pengesahan manual, tetapi ini bukan sahaja rumit, tetapi juga rawan ralat. Selepas beberapa penjelajahan, saya dapati pakej komposer yang dipanggil Ptyhard/JSON-Schema-Bundle, yang membawa kemudahan dan kecekapan yang besar kepada projek saya.

Rangka kerja Laravel mempunyai kaedah terbina dalam untuk melihat nombor versi dengan mudah untuk memenuhi keperluan pemaju yang berbeza. Artikel ini akan meneroka kaedah ini, termasuk menggunakan alat baris perintah komposer, mengakses fail .Env, atau mendapatkan maklumat versi melalui kod PHP. Kaedah ini adalah penting untuk mengekalkan dan menguruskan versi aplikasi Laravel.
