首页 > 解决方案 > 如何检查生产中不需要开发依赖项?

问题描述

由于我们的项目需要一个库来运行测试,所以这个包require-devcomposer.json.

{
    //...
    "require": {
        "php": "^7.4|^8.0",
    },
    "require-dev": {
        "cache/array-adapter": "^1.1"
    },
    //...
}

在手动代码审查期间,我意识到这个库也在我们的生产代码中使用。

修复很简单,我们将相应的包从require-dev部分移动到require部分。

{
    //...
    "require": {
        "php": "^7.4|^8.0",
        "cache/array-adapter": "^1.1"
    },
    "require-dev": {
    },
    //...
}

我正在寻找一种自动方式/测试来避免这种问题。我想我们在暂存期间的手动测试可以避免这类问题,但这还不够。

如何检查我们的核心代码中是否需要开发依赖项?

标签: phptestingcomposer-php

解决方案


您可以使用 PHPStan(或 Psalm,或任何其他静态分析器)来实现这一点:如果您删除了 dev 依赖项,然后运行这样的工具,它会通知您缺少此类依赖项中的类。

但请注意:即使这有助于编写更严格的代码,也可能需要在开始时进行一些工作才能在整个应用程序中实现正确的返回类型


另一个想法:同时删除开发依赖项并运行一个常用的测试套件,如 PHPUnit 或 Behat。


推荐阅读