Pimcore 5.4 - Pimcore is now a Composer Library


#1

Version 5.3.0 has just seen the light of day, already 5.4.0 is out :wink:

5.4.0 brings some profound changes but is fully compatible with existing application code and bundles!

What has changed?

1. Pimcore is now a Composer Library

Right :slight_smile: Pimcore is now located in /vendor/pimcore/pimcore and no longer in the /pimcore folder.
Because of that, Pimcore will no longer be part of the Git Repo, but will be treated like any other dependency.
In addition, the project-specific composer.json will be much clearer, an example can be found here: https://github.com/pimcore/skeleton/blob/master/composer.json#L9

In the course of this, the folder structure of the main repository of Pimcore has also changed a bit:

Short version: everything that used to be in /pimcore is now one level higher, the project-specific files & folders are now in their own repositories, eg:
Empty installation (Skeleton): https://github.com/pimcore/skeleton
Demo Basic: https://github.com/pimcore/demo-basic

2. Pimcore is updated via Composer

The old, GUI-based updater has served its purpose. In the future, Pimcore will be updated by Composer, like all other dependencies. So of course it is important to always have the correct version constraint in composer.json for pimcore/pimcore.
Example: If you have Constraint 5.4.* and you are currently on 5.4.0 - but the most current version is 5.4.3 - then a composer update automatically updates to 5.4.3.

We expect much more stable, massively faster and less problematic updates.

Additional sweet stuff you might like:

  • Core Migrations (update scripts from Pimcore) can now be executed manually:
    ./bin/console pimcore: migrations: migrate -s pimcore_core

  • Rollbacks will almost always be possible

3. FAQ

Are there still “Builds”?
No.

How can I then install “Unstables”?
If you want to always have the latest version of Pimcore during development, you can set the Version Constraint to the following:

“pimcore/pimcore”: “dev-master”
At the latest when going live this should be changed to the correct stable version:

“pimcore/pimcore”: “v5.4.x”
If you want to go to a special commit of Git, eg because you urgently need a patch, or because there is not yet a new release available, but the project should be deployed and builds on “unstable” functionalities, then the whole thing looks like this:

“pimcore/pimcore”: “dev-master#2734529c7f287a88fa2961fa7af8e5473da0a2a1”
2734529c7f287a88fa2961fa7af8e5473da0a2a1 is the corresponding git commit hash.

Important: never use dev-master (without hash) to put a project live, or change it on the live server!

How does the update work from 5.3 to 5.4?
Like this: https://pimcore.com/docs/5.x/Development_Documentation/Installation_and_Upgrade/Upgrade_Notes/Within_V5.html#page_Version-5-4-0
Should be really easy after our first tests, please report in case of questions and problems.

The / pimcore orders fly from our repo → please do not forget (Smile)

How do I set up a new project with Pimcore 5.4?
Like this: https://github.com/pimcore/skeleton

How does it work with the migration / update scripts?
Basically, you do not have to worry about it in a normal update, Pimcore executes them automatically. But if you have a special setup and would like to intervene in this process, then you can easily do this from now on.

Pimcore already has a migration component on board for a long time to implement migrations for projects and bundles:
https://pimcore.com/docs/5.x/Development_Documentation/Development_Tools_and_Details/Migrations.html

This component is now also used with its own so-called migration set (pimcore_core) for the core, so the function is completely the same.
The migrations will then be executed automatically by Composer “post-update” (you will see everything in the console). If you only do a code deployment and then want to run the migration manually, that’s why it works fine now.
Here are a few commands that can be useful:

  • exceute all missing migrations
    ./bin/console pimcore:migrations:migrate -s pimcore_core

  • display status (for not excecuted migrations, …)
    ./bin/console pimcore:migrations:status -s pimcore_core

  • all available commands
    ./bin/console list | grep migrations