search
HomeDevelopment ToolscomposerRefactor 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!

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. If there is any infringement, please contact admin@php.cn delete
Composer with AI: Code Suggestions and InsightsComposer with AI: Code Suggestions and InsightsApr 22, 2025 am 12:05 AM

ComposerwithAI is a tool that uses AI to improve the programming experience. 1) It provides real-time suggestions and bug fixes by analyzing code structure, syntax and pattern. 2) Advanced features include code refactoring, performance optimization and security checking. 3) When using, you can adjust the configuration, provide feedback and combine other tools to solve common problems.

Composer: An Introduction to the PHP Dependency ManagerComposer: An Introduction to the PHP Dependency ManagerApr 21, 2025 am 12:02 AM

Composer is a dependency management tool for PHP, which is used to manage libraries and packages required by projects. 1) It defines dependencies through composer.json file, 2) installs and updates using command line tools, 3) automates the dependency management process, improves development efficiency, 4) supports advanced functions such as dynamically adding dependencies and automatic loading, 5) Ensures consistency of the team environment through composer.lock file.

The Purpose of Composer: Managing Dependencies EfficientlyThe Purpose of Composer: Managing Dependencies EfficientlyApr 20, 2025 am 12:04 AM

Composer is a dependency management tool for PHP, and manages project dependencies through composer.json and composer.lock files. 1. Create the composer.json file and run the composerinstall installation dependency. 2. Use composerrequire to add new dependencies. 3. Configure autoload to implement automatic loading of classes. 4. Use composerdiagnose to check the health status of the project. 5. Optimize dependency management: specify the package name update, use composerdump-autoload-o to optimize the autoloader, use composerinstall--no-d in the production environment

Composer and AI: New Possibilities in PHP DevelopmentComposer and AI: New Possibilities in PHP DevelopmentApr 19, 2025 am 12:03 AM

The combination of AI and Composer can improve PHP development efficiency and security. Specifically reflected in: 1. Dependency analysis and optimization: AI can predict dependencies and reduce conflicts. 2. Automated security checks: AI can identify security vulnerabilities, and it is recommended to update them. 3. Code generation and optimization: AI can automatically generate and optimize related code.

Using Dicr/Yii2-Google to integrate Google API in YII2Using Dicr/Yii2-Google to integrate Google API in YII2Apr 18, 2025 am 11:54 AM

VprocesserazrabotkiveB-enclosed, Мнепришлостольностьсясзадачейтерациигооглапидляпапакробоглесхетсigootrive. LEAVALLYSUMBALLANCEFRIABLANCEFAUMDOPTOMATIFICATION, ČtookazaLovnetakProsto, Kakaožidal.Posenesko

How to use Composer to resolve JSON Schema verification issuesHow to use Composer to resolve JSON Schema verification issuesApr 18, 2025 am 11:51 AM

I'm having a tricky problem when developing a Symfony-based application: how to effectively validate JSON data format. Initially, I tried using manual verification code, but this was not only complicated, but also error-prone. After some exploration, I discovered a Composer package called ptyhard/json-schema-bundle, which brought great convenience and efficiency to my project.

Use Composer to solve the dilemma of recommendation systems: andres-montanez/recommendations-bundleUse Composer to solve the dilemma of recommendation systems: andres-montanez/recommendations-bundleApr 18, 2025 am 11:48 AM

When developing an e-commerce website, I encountered a difficult problem: how to provide users with personalized product recommendations. Initially, I tried some simple recommendation algorithms, but the results were not ideal, and user satisfaction was also affected. In order to improve the accuracy and efficiency of the recommendation system, I decided to adopt a more professional solution. Finally, I installed andres-montanez/recommendations-bundle through Composer, which not only solved my problem, but also greatly improved the performance of the recommendation system. You can learn composer through the following address:

How to quickly build Fecmall advanced project templates using ComposerHow to quickly build Fecmall advanced project templates using ComposerApr 18, 2025 am 11:45 AM

When developing an e-commerce platform, it is crucial to choose the right framework and tools. Recently, when I was trying to build a feature-rich e-commerce website, I encountered a difficult problem: how to quickly build a scalable and fully functional e-commerce platform. I tried multiple solutions and ended up choosing Fecmall's advanced project template (fecmall/fbbcbase-app-advanced). By using Composer, this process becomes very simple and efficient. Composer can be learned through the following address: Learning address

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software