我应该在生产代码库上使用Symfony Flex吗?



我正在使用带有Flex的Symfony 5为我的新PHP应用程序编写Dockerfile

我运行的构建命令之一如下:RUN composer dump-env prod

它给了我错误:

[SymfonyComponentConsoleExceptionCommandNotFoundException]  
Command "dump-env" is not defined.  

我得到它是因为dump-env命令派生自symfony/flex作曲家依赖项,该依赖项位于composer.jsonrequire-dev部分中。

我在Dockerfile中还有另一条指令:RUN composer install --no-dev --no-suggest这就是我收到此错误的原因 - 我在没有安装symfony/flex的情况下运行dump-env命令。

要修复它,我可以将symfony/flex依赖项从require-dev移动到composer.json中的require部分。

所以问题是:

  • 我应该在生产代码库中使用Symfony Flex吗?
  • 如果不是,如何运行dump-env命令以提高生产性能?
  • 如果是,使用它的其他原因是什么? Flex 是否以某种方式影响应用性能?

这是一个很好的问题,因为"避免无用的包"总是"避免兼容性问题"的好主意。

我应该在生产代码库中使用Symfony Flex吗?

在安装过程中,您使用 flex:dump-env提供的命令,因此您必须将其安装在生产环境中。所以我认为你应该使用它。

flex的主要问题是它可以改变你的源代码和环境文件。但是,在安装过程中,您不会调用composer update,而是composer install。因此,即使任何捆绑包有新配方,flex 也不会更新您的源代码。我想您的 env 文件将在安装过程中更新。因此,让此包投入生产是没有问题的。您可以将其替换为个人命令。我想这个包已经过测试并且稳定。许多开发人员和维护者使用它。所以,我想它是"防虫"的。你的命令会更稳定吗?即使您复制源代码,我也不这么认为,因为您的代码不会始终与 flex 命令同步。

Flex被集成到Symfony。我们甚至可以说flex是用来集成symfony的捆绑包的。因此不存在不兼容的风险。

如果是,使用它的其他原因是什么? Flex 是否以某种方式影响应用性能?Flex 不会影响应用程序的性能,因为它从未被调用过。"Never"不是好术语,它仅在调用dump-env命令时使用。

另一个原因:symfony-demo和symfony-skeleton是尊重Symfony最佳实践的应用程序。Symfony团队决定让flex在生产包中,而不是在开发包中。

因此,正如Jakumi在他的评论中所说,"我认为没有理由在生产中避免使用这个包"。没错!此外,我认为有很多理由在生产中使用它。

最新更新