composer-动态设置参数变量



我有以下设置:

  • symfony 2.7经典结构

  • 依赖管理的composer

我需要做的是在parameters.yml中设置一个变量,该变量带有composer运行时的时间戳。

为此,我尝试了以下解决方案:

parameters.yml.dist
   [bla bla bla]
   ran_timestamp: ~

composer.json
   [bla bla bla]
   "scripts": {
       "pre-install-cmd": [
          "export SYMFONY_APP_DATE=$(date +"%s")"
       ],
   }
   "extra": {
       "incenteev-parameters": {
          "file": "app/config/parameters.yml",
          "env-map": {              
            "ran_timestamp": "SYMFONY_APP_DATE"
          }
       }
   }

在parameters.yml中设置变量的部分工作正常(该参数是使用SYMFONY_APP_DATE env变量中的值创建的(。

问题是运行composer时env变量没有更新。有人能帮我吗?

附加信息:

  • 如果我在cli中手动运行预安装cmd中的命令,它可以正常工作(所以我认为命令本身是可以的(

  • 我看到这个命令在composer中开始安装后运行,所以我认为它被执行了(输出如下(:

$composer安装

导出SYMFONY_APP_DATE=$(日期+"%s"(

使用包信息加载composer存储库[bla-bla]

  • 未报告错误

  • 我假设composer可能没有设置env变量的权限-不,不是这个。它与变量范围有关。

问题显然是在子进程(为每个脚本创建(中设置env参数,但不可能从子进程重新定义父进程的env参数(即从其脚本之一为composer本身设置env值(

我认为您需要扩展\Incentiev\ParameterHandler\ScriptHandler::buildParameters才能实现这一点。

UPD:我找到了一种实现的方法

只为composer.json 中的构建参数定义一个特殊块

"scripts": { "build-params": [ "Incenteev\ParameterHandler\ScriptHandler::buildParameters" ],

并且在post-install-cmd块而不是Incenteev\ParameterHandler\ScriptHandler::buildParameters中使其

"export SYMFONY_APP_DATE=$(date +"%s") && composer run-script build-params"

这将在同一过程中创建env-var和构建参数

相关内容

  • 没有找到相关文章

最新更新