composer update 在使用自定义值时不断覆盖 parameters.yml
composer update keeps overwriting parameters.yml when using custom values
我的 parameters.yml 中有一些自定义条目,每次我 运行 作曲家更新时,它都想添加丢失的条目,更糟糕的是会覆盖我的自定义条目。我怎样才能阻止它?
例如在作曲家更新之前
#parameters.yml
# Env = GLOBAL
parameters:
# DB settings - GLOBAL
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
#mailer settings
mailer_to: yo@yo.com
mailer_from: yo@site.com
mailer_transport: smtp
mailer_subject: ":-| Something is broken!"
# Framework use - GLOBAL
locale: en
之后
#parameters.yml
# This file is auto-generated during the composer install
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
mailer_transport: smtp
locale: en
database_name:
database_user:
database_password:
mailer_host:
mailer_user:
mailer_password:
secret:
幸运的是,我的回购和我的 ide 工作文件是两个不同的文件,需要同步。在我 运行 作曲家更新后,当我 运行 同步时,我将所有文件下载到我的 IDE,除了 parameters.yml,那个我推回去覆盖那个那只是自动创建的。
我想消除这种麻烦,因为我将数据库密码保存在 per/env 文件中。
编辑: 当我试图通过将不需要的变量清零来将它们填充为虚拟值时,它也会适得其反。
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Generating autoload files
Updating the "app/config/parameters.yml" file
Some parameters are missing. Please provide them.
database_name: null
database_user: null
database_password: null
mailer_host: null
mailer_user: null
mailer_password: null
secret: null
[Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]
You have requested a non-existent parameter "mailer_from".
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-update-cmd event terminated with an exception
[RuntimeException]
An error occurred when executing the "'cache:clear --no-warmup'" command.
自定义参数本身也会导致问题。
所以现在我去看看我新生成的文件,它看起来像这样
# This file is auto-generated during the composer install
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
mailer_transport: smtp
locale: en
database_name: null
database_user: null
database_password: null
mailer_host: null
mailer_user: null
mailer_password: null
secret: null
但我需要它在重生 ideally 后说的是这个
/**
* my custom comment and copyright/legal tamper warning
*/
# Env = GLOBAL
parameters:
# DB settings - GLOBAL
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
#mailer settings
mail_to: me@site.com
mail_from: site@site.com
mail_transport: smtp
mail_subject: ":-| Something is broken!"
# Framework use - GLOBAL
locale: en
我的其余参数位于另一个参数文件中,该文件根据环境加载的内容动态包含,并且每个参数都有不同的数据库信用。
编辑 根据@AlpineCoder 的回答:
我的最新发现为什么添加虚拟值不起作用
当我将它添加到我的 parameters.yml
#dummy values to avoid regeneration
database_name: dummyvalue
database_user: dummyvalue
database_password: dummyvalue
mailer_host: dummyvalue
mailer_user: dummyvalue
mailer_password: dummyvalue
secret: dummyvalue
它不再要求我填写这些值,这很好,但是,它仍然重新生成文件,删除我所有的自定义值,给我留下这个
# This file is auto-generated during the composer install
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
mailer_transport: smtp
locale: en
database_name: dummyvalue
database_user: dummyvalue
database_password: dummyvalue
mailer_host: dummyvalue
mailer_user: dummyvalue
mailer_password: dummyvalue
secret: dummyvalue
如果您将自定义参数(和默认/虚拟值)添加到 parameters.yml.dist
文件,它不会再询问您/覆盖 parameters.yml
文件中的自定义值。
你有两个选择,要么填写你的 parameters.yml.dist,要么你可以转到你的 composer.json 文件,然后在 post-update-cmd 和 post- install-cmd 你应该看到类似
的东西
"Incenteev\ParameterHandler\ScriptHandler::buildParameters",
如果删除该行,当您 运行 composer 时,您的参数将不再更改。
如果您要与其他人合作,更新您的 parameters.yml.dist 可能是更好的方法,因为这有助于提醒他们在引入新参数时需要填写新参数。
我的 parameters.yml 中有一些自定义条目,每次我 运行 作曲家更新时,它都想添加丢失的条目,更糟糕的是会覆盖我的自定义条目。我怎样才能阻止它?
例如在作曲家更新之前
#parameters.yml
# Env = GLOBAL
parameters:
# DB settings - GLOBAL
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
#mailer settings
mailer_to: yo@yo.com
mailer_from: yo@site.com
mailer_transport: smtp
mailer_subject: ":-| Something is broken!"
# Framework use - GLOBAL
locale: en
之后
#parameters.yml
# This file is auto-generated during the composer install
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
mailer_transport: smtp
locale: en
database_name:
database_user:
database_password:
mailer_host:
mailer_user:
mailer_password:
secret:
幸运的是,我的回购和我的 ide 工作文件是两个不同的文件,需要同步。在我 运行 作曲家更新后,当我 运行 同步时,我将所有文件下载到我的 IDE,除了 parameters.yml,那个我推回去覆盖那个那只是自动创建的。
我想消除这种麻烦,因为我将数据库密码保存在 per/env 文件中。
编辑: 当我试图通过将不需要的变量清零来将它们填充为虚拟值时,它也会适得其反。
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Generating autoload files
Updating the "app/config/parameters.yml" file
Some parameters are missing. Please provide them.
database_name: null
database_user: null
database_password: null
mailer_host: null
mailer_user: null
mailer_password: null
secret: null
[Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]
You have requested a non-existent parameter "mailer_from".
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-update-cmd event terminated with an exception
[RuntimeException]
An error occurred when executing the "'cache:clear --no-warmup'" command.
自定义参数本身也会导致问题。
所以现在我去看看我新生成的文件,它看起来像这样
# This file is auto-generated during the composer install
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
mailer_transport: smtp
locale: en
database_name: null
database_user: null
database_password: null
mailer_host: null
mailer_user: null
mailer_password: null
secret: null
但我需要它在重生 ideally 后说的是这个
/**
* my custom comment and copyright/legal tamper warning
*/
# Env = GLOBAL
parameters:
# DB settings - GLOBAL
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
#mailer settings
mail_to: me@site.com
mail_from: site@site.com
mail_transport: smtp
mail_subject: ":-| Something is broken!"
# Framework use - GLOBAL
locale: en
我的其余参数位于另一个参数文件中,该文件根据环境加载的内容动态包含,并且每个参数都有不同的数据库信用。
编辑 根据@AlpineCoder 的回答: 我的最新发现为什么添加虚拟值不起作用
当我将它添加到我的 parameters.yml
#dummy values to avoid regeneration
database_name: dummyvalue
database_user: dummyvalue
database_password: dummyvalue
mailer_host: dummyvalue
mailer_user: dummyvalue
mailer_password: dummyvalue
secret: dummyvalue
它不再要求我填写这些值,这很好,但是,它仍然重新生成文件,删除我所有的自定义值,给我留下这个
# This file is auto-generated during the composer install
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
mailer_transport: smtp
locale: en
database_name: dummyvalue
database_user: dummyvalue
database_password: dummyvalue
mailer_host: dummyvalue
mailer_user: dummyvalue
mailer_password: dummyvalue
secret: dummyvalue
如果您将自定义参数(和默认/虚拟值)添加到 parameters.yml.dist
文件,它不会再询问您/覆盖 parameters.yml
文件中的自定义值。
你有两个选择,要么填写你的 parameters.yml.dist,要么你可以转到你的 composer.json 文件,然后在 post-update-cmd 和 post- install-cmd 你应该看到类似
的东西"Incenteev\ParameterHandler\ScriptHandler::buildParameters",
如果删除该行,当您 运行 composer 时,您的参数将不再更改。
如果您要与其他人合作,更新您的 parameters.yml.dist 可能是更好的方法,因为这有助于提醒他们在引入新参数时需要填写新参数。