如何为项目创建自定义安装程序进程?

How can I create a custom installer process for a project?

我创建了一个将在其他公司复制的 Symfony 项目。

我想通过使用“composer create-project”之类的命令为其他公司简化此项目的安装,同时询问将根据他们的答案修改 .env 的问题。

我如何使用 Composer 完成此操作?

composer create-project 简单地克隆了一个包的 VCS 存储库,然后执行 composer install。 (Docs).

它没有其他魔法。

因此,您只需使用您的自定义 composer.json 创建一个包,声明您想要 bootstrapping 项目的任何依赖项:

{
    "require": {
        "foo/bar": "^1.1",
        "fizz/buzz": "^3.0"
    }
}

要创建向用户提问并做其他响应的逻辑(例如向 .env 添加内容),您可以利用 Package Events。具体来说 post-create-project-cmd.

所以你要添加到骨架 composer.json 像这样的东西:

{
    "require": {
        "foo/bar": "^1.1",
        "fizz/buzz": "^3.0"
    },
    "scripts":
    {
        "post-create-project-cmd": [
            "php bin/your_custom_setup_script.php"
        ]
    }
}

阅读有关设置脚本的更多信息here

您必须自己完成自定义脚本的实际编码。它可以做任何你需要帮助 bootstrap 安装的事情(更新配置、创建目录、清除缓存等)。