Symfony2停止Composer将parameters.yml.dist安装到parameters.yml中

And*_*son 47 parameters symfony composer-php

symfony 2.3中的新增功能该composer install脚本还将parameters.yml.dist文件内容复制到parameters.yml文件中,此处进一步说明.

我的问题是,如何阻止作曲家执行此操作?

Wou*_*r J 77

从以下位置删除此行两次composer.json:

"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
Run Code Online (Sandbox Code Playgroud)

这是由IncenteevParameterHandler库完成的,该库包含执行此操作的脚本.通过从配置中删除脚本,它将永远不会被调用.

如果你永远删除该行,你也可以删除这些行(因为不再需要库):

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

...

"incenteev-parameters": {
    "file": "app/config/parameters.yml"
},
Run Code Online (Sandbox Code Playgroud)

  • 但事实并非如此.所有这一切都发生在Composer现在不会调用ScriptHandler的buildParameters方法.它甚至不是核心symfony代码的一部分,它是第三方软件包.(所以它的移除不会有任何副作用.)它包含在标准发行版中,因为它在团队工作时非常有用 - 即使它只有2个人 - 所以最终我不建议删除此功能. (7认同)

Dav*_*uel 56

第一个解决方案:在composer.json'extra'部分添加"keep-outdated":true.

[...]
"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"
}
[...]
Run Code Online (Sandbox Code Playgroud)

香火不会再删除参数了.

第二种解决方案:修改app/config/parameter.yml.dist文件.对我来说,添加Sqlite参数'path''memory'并避免在每次进行作曲家更新时都看到它们被删除.

# 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 ------------
[...]
Run Code Online (Sandbox Code Playgroud)

我不知道哪种解决方案是最好的,但两者都有效.

  • 我最喜欢第二种解决方案,因为它迫使你在``parameter.yml.dist``中显示所有项目的参数,以便导出项目的每个人都知道它们. (15认同)