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

时间:2014-05-25 01:22:30

标签: php configuration composer-php

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

composer.phar update --no-dev

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

有没有办法(以编程方式或其他方式)告诉编写者总是跳过开发依赖项?也就是说,是否存在与伪代码匹配的真实代码

//File: composer.json
//...
"no-dev":"true"
//...

2 个答案:

答案 0 :(得分:19)

简而言之:不 - 不,但是。

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"
    }
}

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

答案 1 :(得分:3)

这真的很烦人,所以我最后写了一个简单的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.)

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

console

我还将其他常见任务放在那里(从VCS中获取更改,清除缓存,运行迁移等),因此我在部署期间甚至可以做更少的事情并记住:)。