Home > Article > Development Tools > Refactor the Composer source management tool CRM into a Composer plug-in
The following column composer usage tutorial will explain how to reconstruct the Composer source management tool CRM into a Composer plug-in. I hope it will be helpful to friends in need!
CRM is a command line tool I made a long time ago to manage composer sources. It is designed to switch between multiple Chinese mirrors through simple commands. , so as to manage them conveniently;
At that time, I didn’t know much about the composer plug-in, so the method was relatively crude. The bottom layer executed the composer command to achieve the purpose of switching sources. It was almost fine to use on Linux. There is no special perception, but the win will be a bit sluggish. This is also obvious, after all, when switching, it is equivalent to executing multiple commands at the same time; later, due to the opportunity of work, I learned about the development of the composer plug-in, so the idea of refactoring came up;
with 1.x Compared with the version, 2.x mainly has the following changes:
Metadata storage location changes
In the 1.x version, it is under the user's Home folder A customized file, all user operations are ultimately persisted to this json file; the new version stores metadata in config.json under the composer global path:
{ "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" } } }
This is maintained by composer We borrowed a file and occupied a field in it. This is also more in line with the composer ecosystem
Command changes
1.x version is an independent entry application, and the commands all start with the crm keyword, such as crm ls And so on; in the new version of plug-in, crm becomes a command provider (command provider) role, so in the new version we use the composer entrance;
New version usage
List all available mirrors
$ 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
Marked with "*" indicates the source currently in use;
Switch mirror
$ composer repo:use Please select your favorite registry (defaults to composer) [0] composer [1] phpcomposer [2] composer-proxy [3] laravel-china >
You can also directly append the image name to skip selecting
$ composer repo:use phpcomposer
Add option --current/-c to switch sources for the current project. The default is to modify the global source.
All commands
Execute the following command to view
$ 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
Summary
In addition to changes in usage, The most significant improvement in the new version may be the speed; if you have any questions, please provide feedback by leaving a message under the post or posting on github issues.
I hope this small tool will bring convenience to everyone in their work and development.
Attach the project address: https://github.com/slince/composer-registr...
The above is the detailed content of Refactor the Composer source management tool CRM into a Composer plug-in. For more information, please follow other related articles on the PHP Chinese website!