Symfony Flexプライベートレシピ:作成、設定、使用

こんにちは、Habr。



プライベートレシピの作成、設定、および使用に関する短い記事の指示に注目します。 これには、プロジェクト、バンドル付きのリポジトリ、レシピ付きのリポジトリが必要です。



この記事には多くの画像が含まれているので、リポジトリへのリンクをここに投稿し、残りは猫の下に置きます。



バンドル: symfony-acme-bundle

レシピ: symfony-recipes



行きましょう。



1)新しいプロジェクトを作成するか、既存のプロジェクトを使用します。 主な条件は、Symfony Flexがインストールされていることです。 プロジェクトをゼロから作成することにしました。



新しいプロジェクトを作成するには、次のコマンドを使用します



composer create-project symfony/skeleton symfony-acme-project
      
      









プロジェクトは正常に作成され、インストールされたパッケージにはsymfony / flexが含まれています。



2)新しいバンドル(symfony-acme-bundle)を作成するか、既存のバンドルを使用します。 最初から簡単なバンドルを作成し、packagist.orgに登録することにしました。 リポジトリへのリンクは、記事の冒頭にあります。 バンドルの作成と登録のプロセスは省略しました。なぜなら、 それらに複雑なものは何もありません。



3)Symfony Flex Serverを接続して構成します。 これを行うには、 Symfony Recipes Serverに移動し、「Private Recipes BETA」セクションの「register」リンクをクリックします。 Symfony Flex Serverから登録することもできます



レシピ付きのリポジトリを選択し、「インストール」をクリックします。







その後、お祝いのページが表示されます。







4)レシピを作成します。

このアイテムを2つの部分に分けました。 最初にリポジトリを作成し、次にプルリクエストで新しいレシピを追加します。



4.1)新しいリポジトリ(symfony-recipes)を作成し、ファイルを追加します:LICENSE、config.json、README.md(オプション)。 リポジトリへのリンクは、記事の冒頭にあります。



Config.jsonは非常に重要です。つまり、含まれているデータです。



 { "projects": { "01C1K60FQVPP7FN6C3YB6639RZ": "Symfony Acme Project" } }
      
      





「01C1K60FQVPP7FN6C3YB6639RZ」は、SymfonyプロジェクトのIDです。 段落1で作成したプロジェクトのcomposer.jsonファイルで見つけることができます。



 { "extra": { "symfony": { "id": "01C1K60FQVPP7FN6C3YB6639RZ", "allow-contrib": false } } }
      
      





または、プロジェクトフォルダーでコマンドを実行して



 composer config extra.symfony.id
      
      





4.2)レシピを追加します。 これを行うには、新しいブランチ(add-acme-recipe)を作成し、manifest.json、post-install.txt、config / packages / acme.yamlの3つのファイルを追加します。 重要な点は、レシピを含むフォルダーの名前がpackagist.orgのパッケージ(バンドル)の名前と一致している必要があり、バージョンも一致している必要があるということです。 この例では、「yurijbogdanov / acme-bundle」およびバージョン「1.0」です。



ファイルの内容の例:



yurijbogdanov / acme-bundle / 1.0 / manifest.json



 { "bundles": { "Acme\\AcmeBundle": ["all"] }, "copy-from-recipe": { "config/": "%CONFIG_DIR%/" }, "env": { "ACME_FOO": "hello", "ACME_BAR": "world" } }
      
      





yurijbogdanov / acme-bundle / 1.0 / post-install.txt



 <bg=blue;fg=white> </> <bg=blue;fg=white> Next: Configuration </> <bg=blue;fg=white> </> * Modify your ACME_FOO config in <fg=green>.env</> * Modify your ACME_BAR config in <fg=green>.env</> * Configure your parameters in <fg=green>config/packages/acme.yaml</>
      
      





yurijbogdanov / acme-bundle / 1.0 / config / packages / acme.yaml



 acme: foo: hello bar: world
      
      





次に、レシピ付きのブランチをリモートリポジトリに追加し、プルリクエストを作成します。











ここで、マスターに直接ではなく、プルリクエストを介してレシピを追加する方が良い理由をいくつか説明します(単独で作業する場合でも)。



プルリクエストを行うたびに、symfony-flex-serverボットによってコードがチェックされ、要件からのわずかな逸脱も記録されます。







[詳細]リンクをクリックすると、ボットによって検出されたエラーを正確に確認できます。







成功すると、ボットから承認が表示され、マスターでマージできます。







ブランチは正常に染色され、パッケージ(バンドル)のインストールに進むことができます。







5)バンドルをプロジェクトに追加します。 これを行うには、プロジェクトフォルダーに移動し、コマンドを実行します



 composer require yurijbogdanov/acme-bundle
      
      









レシピを使用してバンドルが正常にインストールされました。



 Symfony operations: 1 recipe (7302152d871c6cc69ec5de45f91d1b38) - Configuring yurijbogdanov/acme-bundle (>=1.0): From github.com/yurijbogdanov/symfony-recipes:master
      
      





レシピにより、プロジェクトに次の変更が加えられました。



1)config / bundles.phpにバンドルを追加しました



 <?php return [ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], Acme\AcmeBundle::class => ['all' => true], ];
      
      





2).env.distに環境変数を追加しました



 ###> yurijbogdanov/acme-bundle ### ACME_FOO=hello ACME_BAR=world ###< yurijbogdanov/acme-bundle ###
      
      





3)acme.yaml構成ファイルをconfig / packages /に追加しました



ご清聴ありがとうございました。



All Articles