Home  >  Article  >  Development Tools  >  Refactor the Composer source management tool CRM into a Composer plug-in

Refactor the Composer source management tool CRM into a Composer plug-in

藏色散人
藏色散人forward
2019-08-27 14:13:463160browse

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!

Refactor the Composer source management tool CRM into a Composer plug-in

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!

Statement:
This article is reproduced at:learnku.com. If there is any infringement, please contact admin@php.cn delete