【问题标题】:How to stop PHP Composer autoload require-dev library?如何停止 PHP Composer 自动加载 require-dev 库?
【发布时间】:2014-10-17 00:40:35
【问题描述】:

我只使用 PHPUnit 进行测试和开发,我不希望我的应用程序在生产服务器中自动加载它们,这可能吗?

"require-dev": {
    "phpunit/phpunit": "4.2.*",
..

我看到文件“autoload_classmap.php”包含诸如..之类的行

return array(
    'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/File/Iterator.php',
    'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/File/Iterator/Facade.php',

更新:

我想要一个干净的生产环境,不想自动加载 phpunit,我只需要在开发过程中使用 phpunit。那么,composer 可以生成两个 autoload.php 以便我可以根据我当前的环境包含它们吗?

【问题讨论】:

    标签: php phpunit composer-php


    【解决方案1】:

    --no-dev : 跳过安装 require-dev 中列出的包

    composer install --no-dev --optimize-autoloader
    

    您可能还想这样做:--optimize-autoloader (-o):将 PSR-0/4 自动加载转换为类映射以获得更快的自动加载器。这特别推荐用于生产环境,但可能需要一些时间来运行,因此目前默认情况下不会这样做。

    【讨论】:

    • 关于类图:请在此处查看我的答案:stackoverflow.com/questions/22803419/… 简短版:类图并不是在每种情况下自动加载的最快方法。
    • 谢谢,我已经更新了问题。其实我想要的是生成两个autoload.php,一个用于开发,一个用于生产。有可能吗?
    • --dev(默认),将从require-dev部分安装东西。 --no-dev 不会安装 require-dev 部分。这就是你所需要的。
    • 是的,你是对的,但默认也会polluteautoload.php,我不介意浪费存储空间,但我不想浪费CPU时间自动加载我在生产中从未使用过的东西。 (实际上最好避免自动加载我不打算在生产中使用的库)
    • @Howard,你似乎没有抓住重点。在开发中,它以默认值运行 - 因此 composer 引入,并构建自动加载以包含 PHPUnit 等来自 require-dev 部分。在生产中,当你运行 composer 时,你添加了 --no-dev 参数,它不会从 require-dev 中提取任何东西。
    猜你喜欢
    • 2021-03-18
    • 1970-01-01
    • 2018-07-11
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    相关资源
    最近更新 更多