gpt4 book ai didi

php - composer - 动态设置参数变量

转载 作者:可可西里 更新时间:2023-11-01 13:52:27 26 4
gpt4 key购买 nike

我有以下设置:

  • symfony 2.7经典结构

  • 依赖管理的编写器

我需要做的是在 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 环境变量的值创建的)。

问题是运行 composer 时环境变量没有更新。谁能帮我解决这个问题?

附加信息:

  • 如果我在 cli 中手动运行来自 pre-install-cmd 的命令,它工作正常(所以我认为命令本身没问题)

  • 我看到命令在 composer 开始安装后正在运行,所以我认为它已执行(输出如下):

$composer install

export SYMFONY_APP_DATE=$(date +"%s")

Loading composer repositories with package information [bla bla bla]

  • 没有报错

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

最佳答案

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

我认为您需要扩展\Incenteev\ParameterHandler\ScriptHandler::buildParameters 才能实现它。

UPD:我找到了实现它的方法

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

“脚本”:{
“构建参数”:[
“Incenteev\\ParameterHandler\\ScriptHandler::buildParameters”
],

并且在 post-install-cmd block 中而不是 Incenteev\\ParameterHandler\\ScriptHandler::buildParameters 中实现

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

这将在同一进程中创建环境变量和构建参数

关于php - composer - 动态设置参数变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39165408/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com