Symfony2 stop Composer installing parameters.yml.dist into parameters.yml

29,270

Solution 1

Remove this line twice from your composer.json:

"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",

This is done by the IncenteevParameterHandler library, which contains a script that does this. By removing the script from the config, it will never be called.

If you remove that line for ever, you can also remove these lines (as the library isn't really needed anymore):

"incenteev/composer-parameter-handler": "~2.0",

...

"incenteev-parameters": {
    "file": "app/config/parameters.yml"
},

Solution 2

First solution : add "keep-outdated": true in the 'extra' section of your composer.json.

[...]
"extra": {
    "symfony-app-dir": "app",
    "symfony-web-dir": "web",
    "incenteev-parameters": {
        "file": "app/config/parameters.yml",
        "keep-outdated": true  <------------ ADDED LINE ------------
    },
    "branch-alias": {
        "dev-master": "2.3-dev"
    },
    "symfony-assets-install": "symlink"
}
[...]

incenteev will not remove parameters any more.

Second solution : modify the app/config/parameter.yml.dist file. For me it was to add Sqlite parameters 'path' and 'memory' and avoid to see them deleted each time I do a composer update.

# app/config/parameter.yml.dist
parameters:
    database_driver:   pdo_sqlite
    database_host:     ~
    database_port:     ~
    database_name:     ~
    database_user:     ~
    database_password: ~
    database_path:     ~ <------------ ADDED LINE ------------
    database_memory:   ~ <------------ ADDED LINE ------------
[...]

I don't know which solution is the best but both works.

Solution 3

leaving empty this array of parameters:

"incenteev-parameters": {
    "file": "app/config/parameters.yml"
},

in the extra section of your composer.json file should work.

"incenteev-parameters": {},

Solution 4

This is the correct solution in my opinion:

"incenteev-parameters": {
    "file": "app/config/parameters.yml",
    "keep-outdated": true
},

It was mentioned in this github issue https://github.com/symfony/symfony-standard/issues/642 as well as in the github documentation for incenteev-parameters https://github.com/Incenteev/ParameterHandler

Share:
29,270

Related videos on Youtube

Andrew Atkinson
Author by

Andrew Atkinson

Updated on July 09, 2022

Comments

  • Andrew Atkinson
    Andrew Atkinson almost 2 years

    New in symfony 2.3 the composer install script also copies the parameters.yml.dist file contents into the parameters.yml file, explained further here.

    My question is, how can I stop composer preforming this action?

  • flu
    flu over 10 years
    I like the second solution the best as it forces you to manifest all your project's parameters in the parameter.yml.dist so that everyone who exports your project knows about them.
  • ZeeCoder
    ZeeCoder over 9 years
    It's not though. All that's happening is that Composer now won't call the buildParameters method of the ScriptHandler. It's not even part of the core symfony code, it's a 3rd party bundle. (So it's removal won't have any side-effects.) It's included in the standard distro though, since it's really useful when working in teams - even if it's just 2 people -, so ultimately I wouldn't recommend removing this functionality.