Symfony2 остановите Composer, установив параметры .yml.dist в параметры.

43

Новое в symfony 2.3 composer install script также копирует содержимое файла parameters.yml.dist в файл parameters.yml, объясняется далее здесь.

Мой вопрос: как я могу остановить композитор, претворяющий это действие?

Теги:
parameters
composer-php

4 ответа

73
Лучший ответ

Удалите эту строку дважды из composer.json:

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

Это выполняется библиотекой IncenteevParameterHandler, которая содержит script, которая делает это. Удалив script из конфигурации, он никогда не будет вызван.

Если вы удалите эту строку навсегда, вы также можете удалить эти строки (так как библиотека больше не нужна):

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

...

"incenteev-parameters": {
    "file": "app/config/parameters.yml"
},
  • 3
    кажется довольно хакерским ...
  • 7
    Это не так. Все, что происходит, это то, что Composer теперь не будет вызывать метод buildParameters ScriptHandler. Это даже не часть основного кода Symfony, это сторонний пакет. (Таким образом, удаление не будет иметь никаких побочных эффектов.) Хотя оно включено в стандартный дистрибутив, поскольку оно действительно полезно при работе в командах - даже если это всего 2 человека - поэтому в конечном итоге я бы не рекомендовал удалять эту функцию.
57

Первое решение: добавьте "keep-outdated": true в разделе "extra" вашего 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"
}
[...]

stimeev больше не будет удалять параметры.

Второе решение: измените файл app/config/parameter.yml.dist. Для меня это было добавление параметров Sqlite "путь" и "память" и избегать их удаления при каждом обновлении композитора.

# 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 ------------
[...]

Я не знаю, какое решение лучше, но оба работают.

  • 15
    Мне больше нравится второе решение, так как оно заставляет вас указывать все параметры вашего проекта в файле parameter.yml.dist чтобы каждый, кто экспортирует ваш проект, знал о них.
  • 0
    согласился с этим
4

оставляя пустой массив параметров:

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

в дополнительном разделе вашего файла composer.json должно работать.

"incenteev-parameters": {},
  • 0
    Это дает ошибку в symfony3
1

Это правильное решение, на мой взгляд:

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

В этом выпуске github упоминалось https://github.com/symfony/symfony-standard/issues/642, а также в документации github для параметров стимула https://github.com/Incenteev/ParameterHandler

Ещё вопросы

Сообщество Overcoder
Наверх
Меню