PHP Composer:没有开发的开发模式

Ala*_*orm 24 php configuration composer-php

当您installupdate具有作曲家的项目时,您可以告诉它使用--no-dev标志跳过与开发相关的依赖项(测试,构建工具等)

composer.phar update --no-dev
Run Code Online (Sandbox Code Playgroud)

如果没有此标志,composer将始终下载额外的依赖项.

是否有任何方式(以编程方式或其他方式)告诉作曲家总是跳过开发依赖项?也就是说,是否存在与伪代码匹配的真实代码

//File: composer.json
//...
"no-dev":"true"
//...
Run Code Online (Sandbox Code Playgroud)

Jen*_*och 20

简而言之:不 - 不是.

Composer的默认安装模式是安装开发依赖项.

据我所知,只有CLI选项--no-dev,没有配置选项.

可以在项目的composer.json中定义配置部分,请参阅https://getcomposer.org/doc/04-schema.md#config

但是,快速浏览一下源代码就会发现,没有配置指令.https://github.com/composer/composer/blob/master/src/Composer/Config.php#L22

{
    "config": {
        "no-dev": "true"
    }
}
Run Code Online (Sandbox Code Playgroud)

+1这个想法.它可能是Config类的一个有用的补充.

  • 同意.为什么不添加?每当有人更新我们的生产环境时,他们往往会忘记--no-dev,安装一堆不需要的东西 (3认同)
  • 我不知道.我在[作曲家问题](https://github.com/composer/composer/issues/3008)上引用了这个问题.它现在已经快一年了,但还没有人解决它.也许我应该贡献一点补丁:) (3认同)

rob*_*006 6

这确实很烦人,所以我终于写了一个简单的bash脚本,询问环境并运行正确的命令:

#! /bin/bash

read -p "Which environment use to deploy: (P)roduction (T)est (D)ev? (p/t/d): " -n 1 -r
echo

if [[ $REPLY =~ ^[^PpTtDd]$ ]]; then
    echo "Incorrect environment";
    exit 1;
fi

# tasks to run before composer install (svn up/git pull)

if [[ $REPLY =~ ^[Pp]$ ]]; then
    composer install --prefer-dist --no-dev --classmap-authoritative
elif [[ $REPLY =~ ^[Tt]$ ]]; then
    composer install --prefer-dist --classmap-authoritative
elif [[ $REPLY =~ ^[Dd]$ ]]; then
    composer install
fi

# additional tasks after composer install (clear cache, migrations, etc.)
Run Code Online (Sandbox Code Playgroud)

将其保存bin/deploy在项目中,并添加了执行权限。所以现在我用的bin/deploy不是composer install

安慰

我还在那里放置了其他常见任务(从VCS中拉出更改,清除缓存,运行迁移等),因此在部署过程中我要做的事情和记住的事情甚至更少了:)。