我正在开发一个PHP网站。我的笔记本电脑上有一个版本,我可以在其中开发所有内容,以及运行该站点的Web服务器。
我发现我只能使用作曲家在我的笔记本电脑上安装 PHPUnit,而不是在我的 Web 服务器上使用"require-dev"
选项 使用"require-dev"在作曲器中安装软件包
但是,这有一些缺点:
从现在开始,我必须在网络服务器上调用
php composer update --no-dev
,如果我忘记--no-dev
那么它也安装在网络服务器上我必须使用
$ ./vendor/bin/phpunit
来调用phpunit我必须在笔记本电脑上为每个项目安装 phpunit。
在 Ubuntusudo apt-get install phpunit
上安装 phpunit 不是更好吗?这样我就不必担心在服务器上使用--no-dev
选项,我可以简单地通过$ phpunit
调用它。我在这里错过了什么重要的东西吗?
快速回答是:
- 你可以在你的项目中有一个你想要的phppunit版本,在另一个项目中有一个版本。无论如何,
--no-dev
都应该在生产中使用,因为您不想在生产环境中安装所有开发依赖项 - 如果您不想调用
./vendor/bin/phpunit
请将脚本添加到 composer.json,然后通过composer test
或您创建的任何内容运行测试 - 在第一篇中解释过。这真的很有意义,特别是当你使用一些只适用于某些特定版本的 php/phpunit 等的遗留代码时。
我通常在"require-dev"部分安装phpunit
和其他工具,但另一个完全合理的选择是从网站下载phpunit.phar文件,并将其与其余代码一起签入 - 偶尔手动更新它。
本地(或全局)Composer 安装将允许更好地控制哪个版本可用,并且您可以看到它或其他依赖项何时因composer outdated
而过期。
至于生产部署,您应该尽可能自动化它,以确保每次都发生完全相同的事情。这样,它只是部署脚本或其他机制中的另外几个字符。