Bagaimana cara menggunakan kembali kode dengan bundel symfony 5? Bagian 7. Siklus rilis, instalasi, dan pembaruan

Mari kita bicara tentang cara menghentikan copy-paste antara proyek dan mentransfer kode ke bundel plug-in symfony 5. yang dapat digunakan kembali. Serangkaian artikel yang merangkum pengalaman saya dengan bundel akan memimpin dalam praktik dari membuat bundel minimal dan refactoring aplikasi demo ke pengujian dan siklus rilis bundel.


Pada artikel seri sebelumnya, kami mengambil kode yang dapat digunakan kembali ke dalam satu bundel penuh, dikonfigurasi dan mengujinya. Dalam artikel terakhir, kita akan berbicara tentang siklus hidup bundel: dari instalasi hingga siklus rilis.


Dalam artikel ini:


  • README.md
  • Instalasi: melalui komposer, resep Flex, perintah konsol
  • Siklus rilis, rilis versi baru
  • Versi Semantik
  • Melakukan Perubahan pada CHANGELOG.md


Jika Anda tidak secara konsisten menyelesaikan tutorial, maka unduh aplikasi dari repositori dan alihkan ke cabang 6-testing .


Petunjuk untuk menginstal dan memulai proyek dalam file README.md. Anda akan menemukan versi final kode untuk artikel ini di cabang 7-dukungan .


Penolakan


«»,   ,   . ,  .



, composer:


composer require bravik/calendar-bundle

:


  1. vendors
  2. composer- Symfony Flex, config/bundles.php.

. , - CalendarBundle:


  • - . , config/packages/ - . ?
  • , Doctrine. , , . ?
  • β€” , . , , . . : composer Symfony , , npm , package.json . .

, ?


README.md


. , : README.md .


, , . .


, . , .


Best Practices for Reusable Bundles


Symfony Flex


Symfony , . , - , ENV-, .gitignore- .


composer Symfony Flex. - , . , , - . .


, . , , , .gitignore, ENV-, .

Symfony Flex? open-source Flex , .


, . : Symfony Contribution- Symfony. Contrib , , .


, . :


Symfony Flex Private Repositories β€” Fabien Potencier, 2017
Symfony 4 Using Private Recipes with Flex β€” Sebastian Sellmeier, 2018
Symfony Flex Private Recipes: , β€” , 2017


, :


  1. 1.5-2
  2. Flex Server , 249 EUR .
  3. Flex Server packagist, .
  4. Flex Server MIT BSD
  5. , . 1.5 .



Symfony Flex Symfony open-source Symfony-, .


CLI- Symfony


, README.md


: .


mybundle/src/Command/InstallCommand.php:


<?php

namespace bravik\CalendarBundle\Command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Filesystem\Filesystem;

class InstallCommand extends Command
{
    protected static $defaultName = 'bravik:calendar:install';

    /** @var Filesystem */
    private $filesystem;

    private $projectDir;

    public function __construct(Filesystem $filesystem, string $projectDir)
    {
        parent::__construct();

        $this->filesystem = $filesystem;
        $this->projectDir = $projectDir;
    }

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $output->writeln('Installing bravik/CalendarBundle...');

        $this->initConfig($output);

        //    
        // ...

        return 0;
    }

    private function initConfig(OutputInterface $output): void
    {
        // Create default config if not exists
        $bundleConfigFilename = $this->projectDir
            . DIRECTORY_SEPARATOR . 'config'
            . DIRECTORY_SEPARATOR . 'packages'
            . DIRECTORY_SEPARATOR . 'calendar.yaml'
        ;
        if ($this->filesystem->exists($bundleConfigFilename)) {
            $output->writeln('Config file already exists');

            return;
        }

        //      
        $config = <<<YAML
calendar:
  enable_soft_delete: true
YAML;
        $this->filesystem->appendToFile($bundleConfigFilename, $config);

        $output->writeln('Config created: "config/packages/calendar.yaml"');

    }
}

, , , .


. , . .


, Symfony, shell-script.



, . , .


, CHANGELOG.md. , :



, , . , , .


:


<major>.<minor>.<patch>

β€” .


:


  • , , .
  • , , .
  • -, , .


Composer , , - .


CalendarBundle.


?


composer.json:


{
    "name": "bravik/calendar-bundle",
    "version": "0.1.0",
    ...
}

, Composer git-. , . :


git tag v0.1.0

composer.json β€” composer .


?


composer.json - :


"require": {
    "bravik/calendar-bundle": "^0.1.0",
    ...
},

^ composer , :


  • > 1.0.0 2.0.0.
  •   1.0.0   Β« Β», -.

> 0.1.0 < 0.2.0.


?


bundles/CalendarBundle/composer.json :


{
    "version": "0.1.1",
}

:


composer outdated


. β€” , β€” . , .


:


{
    "version": "0.2.1",
}


Composer . , . composer , require composer.json -.


?


composer update

.


, Composer


CHANGELOG.md


, , . . . CHANGELOG.md


?


, . , . , β€” , .


(  Β«  Β» 0.X.X) . , . CHANGELOG.md β€” , . !


CHANGElOG.md, .


:


# CHANGELOG
      

[BC] -   breaking changes

[BugFix] -   

## Unreleased
     
 * CAL-5 [BC]  
 * CAL-5    

## [0.2.0] (2020-04-06)
 * CAL-5 [BC]     
    -       `calendar_bundle.exporter`
 * CAL-6 [BC]     
    -   ,  ,        X  Y.        SQL  "XXX"
 * CAL-7   

## [0.1.1] (2020-03-30)
* CAL-4 [BugFix]      

## [0.1.0] (2020-02-15)
* CAL-1   
* CAL-2   
* CAL-3   
* [BugFix] Editor should initialize blocks only when they change

CHANGELOG.md symfony/framework-bundle. Symfony : . UPGRADE.md Symfony 4 Symfony 5.



Doctrine .


. , . β€” .


- : - .


SQL , , ?


.


, , .



      ,   .    β€”  .


7-support.



1.
2.
3. : , , JS
4.
5.
6. ,
7. ,


All Articles