ホームページ > 開発ツール > composer > Composer.lock ファイルは何をするのでしょうか?

Composer.lock ファイルは何をするのでしょうか?

藏色散人
リリース: 2019-11-23 11:24:01
転載
4454 人が閲覧しました

composer uses の次のチュートリアル コラムでは、composer.lock ファイルの機能を紹介します。

Composer.lock ファイルは何をするのでしょうか?

Composer の基本的な使用法

プロジェクトで Composer.json を使用する

プロジェクトで Composer を使用します。 Composer.json ファイルが必要です。このファイルは主に、パッケージと他の要素タグ間の関係を宣言するために使用されます。

require キーワード

composer.json で最初に行うことは、require キーワードを使用することです。プロジェクトに必要なパッケージを Composer に伝えます

コードは次のとおりです:

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}
ログイン後にコピー

ご覧のとおり、require オブジェクトはパッケージ名 (monolog/monolog) をマップし、パッケージのバージョンは 1.0 です。*

パッケージの命名

基本的に、パッケージの命名はメイン名/プロジェクト名 (monolog/monolog) です。メイン名は一意である必要がありますが、パッケージであるプロジェクトの名前は、同じ名前にすることもできます (例: igorw/json、seldaek /json)

パッケージ バージョン

使用する必要がある monolog のバージョンは 1.0.* です。つまり、次のとおりです。バージョンは 1.0.0、1.0.2、1.0 などの 1.0 ブランチです。99

バージョン定義の 2 つの方法:

1. 標準バージョン: 保証されたバージョンのパッケージ ファイルを定義します。例: 1.0.2

2. 特定の範囲のバージョン: 比較記号を使用して有効なバージョンの範囲を定義します。有効な記号は >、>=、<、<=、!=# です。

##3. ワイルドカード文字: 特殊な一致記号 * (例: 1.0.* は >=1.0 と同等、<1.1 バージョンで十分です)

4. 次に重要なバージョン: 最良の説明~ 記号の特徴は、~1.2 は >1.2、<2.0 と同等ですが、~1.2.3 は >=1.2.3、<バージョン 1.3 と同等であるということです。

インストール パッケージ

プロジェクト ファイル パスで実行

コードは次のとおりです:

$ composer install
ログイン後にコピー

このように、 monolog/monolog ファイルがベンダー ディレクトリに自動的にダウンロードされます。

次に説明する必要があるのは、

composer.lock - ロック ファイルです。

必要なパッケージをすべてインストールした後、composer は標準パッケージ バージョンを生成します。ファイルは次のとおりです。作曲家.lock ファイル。これにより、すべてのパッケージのバージョンがロックされます。

composer.lock (もちろん、composer.json と一緒に) を使用して、プロジェクトのバージョンを制御します。

これは非常に重要です。install コマンドを使用して処理する場合、最初にcombos.lock ファイルが存在するかどうかを確認します。存在する場合は、対応するバージョンがダウンロードされます (composer.json の構成に基づいていない)。つまり、プロジェクトをダウンロードするすべてのユーザーが同じバージョンを取得することになります。

composer.lock が存在しない場合、composer は、composer.json を通じて必要なパッケージと相対バージョンを読み取り、composer.lock ファイルを作成します。

この方法では、パッケージが存在した後に、次のことができます。新しいバージョンにアップグレードすると、自動的に更新されません。新しいバージョンにアップグレードするには、update コマンドを使用するだけです。この方法で、パッケージの最新バージョンを取得し、composer.lock ファイルも更新できます。

$ php composer.phar update
或者
$ composer update
ログイン後にコピー

Packagist (これは、composer である必要があります。それほど強力ではありませんが、Python パッケージに少し似ています。笑、この標準があれば、将来的には間違いなく誰でも簡単に Web サイトを開発できるようになります。

Packagist は、composer のメイン ウェアハウスです。チェックアウトできます。composer ウェアハウスの基礎は、パッケージのソース コードです。 Packagist の目的は、誰でも使用できるライブラリを構築することです。リポジトリを使用できます。つまり、ファイル内の任意の必須パッケージを意味します。

自動読み込みについて

パッケージ ファイルを便利に読み込むために、Composer はファイル Vendor/autoload.php を自動的に生成します。

require &#39;vendor/autoload.php&#39;;
ログイン後にコピー

を使用する必要があります。これは、サードパーティのコードを非常に便利に使用できることを意味します。プロジェクトで monlog を使用する必要がある場合は、自動的に読み込まれているため、直接使用できます!

コードは次のとおりです:

$log = new Monolog\Logger(&#39;name&#39;);
$log->pushHandler(new Monolog\Handler\StreamHandler(&#39;app.log&#39;, Monolog\Logger::WARNING));
$log->addWarning(&#39;Foo&#39;);
ログイン後にコピー

もちろん、composer.json に独自のコードを読み込むこともできます:

コードは次のとおりです:

{
    "autoload": {
        "psr-0": {"Acme": "src/"}
    }
}
ログイン後にコピー

composer は psr を配置します-0 Acme 名前空間として登録

名前空間を介してファイル ディレクトリへのマッピングを定義できます。src ディレクトリはルート ディレクトリで、vendor は同じレベルのディレクトリです。たとえば、ファイルは次のとおりです: src /Acme/Foo。PHP には Acme\Foo クラスが含まれています。

自動ロードを追加した後、再インストールして、vendor/autoload.php ファイルを生成する必要があります。

このファイルを参照すると、次の値が返されます。オートローダー クラスの強みを活かして、戻り値を変数に入れてから、さらに名前空間を追加できます。これは、開発環境にいる場合に非常に便利です。例:

コードは次のとおりです:

$loader = require &#39;vendor/autoload.php&#39;;
$loader->add('Acme\Test', __DIR__);
ログイン後にコピー

composer.lock ファイルの役割

install コマンドは、現在のディレクトリから combos.json ファイルを読み取り、依存関係を処理して、それをベンダー ディレクトリ。

コードは以下のように表示されます:

composer install
ログイン後にコピー

如果当前目录下存在 composer.lock 文件,它会从此文件读取依赖版本,而不是根据 composer.json 文件去获取依赖。这确保了该库的每个使用者都能得到相同的依赖版本。

如果没有 composer.lock 文件,composer 将在处理完依赖关系后创建它。

为了获取依赖的最新版本,并且升级 composer.lock 文件,你应该使用 update 命令。

代码如下:

composer update
ログイン後にコピー

这将解决项目的所有依赖,并将确切的版本号写入 composer.lock。

如果你只是想更新几个包,你可以像这样分别列出它们:

代码如下:

composer update vendor/package vendor/package2
ログイン後にコピー

你还可以使用通配符进行批量更新:

代码如下:

composer update vendor/*
ログイン後にコピー

以上がComposer.lock ファイルは何をするのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:jb51.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート