Composer나 artisan을 실행했을 때의 출력을 색으로 한다

초기 상태 (단색 출력)



Composer



콘솔에서 Composer를 실행할 때,


토카

artisan



콘솔에서 Laravel의 artisan 명령을 실행할 때


같은 단색으로 보기 어려운 화면이 되어 있지 않습니까?

계기



평소와 다른 환경에서 작업을 할 때 composer outdated를 실행하면 ...


뭔가 색이 붙어있다! ! 라는 것이 계기였습니다.

방법 1 "--ansi" 부여



옵션 확인



위의 Composer나 artisan을 실행했을 때의 옵션을 살펴보면,
``

/_/____ ___ ____ ____ ________ _____
///__\/__`__\/__\/__\/__/_\/_/
/////////////////_/()//
_/_/////_/./_//_//
//
Composer version 1.2.0 2016-07-19 01:28:52

Usage:
command [options] [arguments]

Options:
~중략~
--ansi Force ANSI output
``

이 ansi의 옵션을 유효하게 해 주면(자), 색 첨부로 출력됩니다.
ansi란 무엇인가는, 이 기사 가 참고가 될지도 모릅니다.

Composer





artisan





방법 2 posix_isatty 함수 사용



수수께끼는 미해결



"--ansi"옵션으로 색을 붙이는데 성공했지만, 처음에 색이 붙었을 때는, 옵션은 사용하고 있지 않습니다.
물론 bash에서 alias artisan='php artisan --ansi' 와 같은 별칭이 붙었던 것도 없습니다.

Google 선생님에게 물어 보았습니다만, 듣는 방법이 나쁜지 정확한 답변을 얻을 수 없어…

소스를 읽어 보면 좋지 않다!



그렇다고 해서, Laravel의 소스를 읽고 추적한 결과, 아래와 같은 부분에 도착했습니다.

vendor/symfony/console/Output/StreamOutput.php
protected function hasColorSupport()
{
    if (DIRECTORY_SEPARATOR === '\\') {
        return
            0 >= version_compare('10.0.10586', PHP_WINDOWS_VERSION_MAJOR.'.'.PHP_WINDOWS_VERSION_MINOR.'.'.PHP_WINDOWS_VERSION_BUILD)
            || false !== getenv('ANSICON')
            || 'ON' === getenv('ConEmuANSI')
            || 'xterm' === getenv('TERM');
    }

    return function_exists('posix_isatty') && @posix_isatty($this->stream);
}


CentOS를 사용하고 있기 때문에 if 문 안은 관계없이 마지막 한 줄에 주목하고 조사한 결과 posix_isatty 함수가 없다는 것을 깨달았습니다.

php-process 설치



posix_isatty 함수를 사용하려면 yum에서 php-process를 설치해야합니다.sudo yum install -y --enablerepo=remi-php70 php-process--enablerepo=remi-php70 부분은 자신의 환경으로 바꾸십시오.
설치 후 다시 composer와 artisan을 실행하면 ...

Composer





artisan





이제 "--ansi"옵션을 붙이지 않고도 색이 표시됩니다.

좋은 웹페이지 즐겨찾기