ホームページ >開発ツール >composer >Composer ソース管理ツール CRM を Composer プラグインにリファクタリングする

Composer ソース管理ツール CRM を Composer プラグインにリファクタリングする

藏色散人
藏色散人転載
2019-08-27 14:13:463225ブラウズ

次のコラム composer 使用法チュートリアル では、Composer ソース管理ツール CRM を Composer プラグインに再構築する方法について説明します。困っている友人の役に立てば幸いです。

Composer ソース管理ツール CRM を Composer プラグインにリファクタリングする

CRM は、コンポーザー ソースを管理するために私がずっと前に作成したコマンド ライン ツールです。簡単なコマンドで複数の中国語ミラーを切り替えるように設計されています. を使いやすく管理するため;

当時はコンポーザープラグインのことをあまり知らなかったので比較的大雑把な方法でしたが、最下層は目的を達成するためにコンポーザーコマンドを実行しましたLinux で使用する場合はほぼ問題ありませんでした。特別な認識はありませんが、勝利は少し鈍くなります。これも当たり前のことですが、結局切り替え時は複数のコマンドを同時に実行するのと同じことになります; その後、仕事の機会でコンポーザープラグインの開発について知ったので、リファクタリングが登場;

with 1.x バージョンと比較して、2.x では主に次の変更点があります:

メタデータの保存場所の変更

1.x バージョンでは、ユーザーのホーム フォルダーの下にあります。カスタマイズされたファイルで、すべてのユーザー操作は最終的にこの json ファイルに保存されます。新しいバージョンでは、コンポーザー グローバル パスの下の 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 によって管理されています。私たちはファイルを借りて、その中のフィールドを占有しました。これは、コンポーザーのエコシステムとより一致しています。

コマンドの変更

1.x バージョンは独立したエントリ アプリケーションであり、コマンドはすべて crm キーワードで始まります。 crm ls など; 新しいバージョンのプラグインでは、crm はコマンド プロバイダー (コマンド プロバイダー) の役割になるため、新しいバージョンではコンポーザー エントランスを使用します;

新しいバージョン使用法

#利用可能なすべてのミラーのリスト#

$ 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 の問題に投稿して、フィードバックをお寄せください。

この小さなツールがすべての人の仕事や開発に利便性をもたらすことを願っています。

プロジェクトのアドレスを添付します:

https://github.com/slince/composer-registr...

以上がComposer ソース管理ツール CRM を Composer プラグインにリファクタリングするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。