LoginSignup
5
3

More than 5 years have passed since last update.

Composerやartisanを実行したときの出力を色付きにする

Posted at

初期状態(単色の出力)

Composer

コンソールからComposerを実行したときに、
composer no ansi

とか

artisan

コンソールからLaravelのartisanコマンドを実行したとき
artisan no ansi

みたいな単色で見にくい画面になっていませんか?

きっかけ

普段と違う環境で作業をしているとき、composer outdatedを実行したら…
outdated.png

なんか色がついてる!!ってなったのがきっかけでした。

方法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

composer ansi

artisan

artisan ansi

方法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文の中は関係なく、最後の1行に着目し調査したところ、posix_isatty関数がないことに気づきました。

php-processのインストール

posix_isatty関数を有効にするにはyumでphp-processをインストールすれば良いとのこと
sudo yum install -y --enablerepo=remi-php70 php-process

--enablerepo=remi-php70の部分は自分の環境に置き換えてください
インストール後、再度composerとartisanを実行すると…

Composer

composer

artisan

artisan

これで、"--ansi"オプションを付けずとも、色付きの表示になりました。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3