0

私は非常に単純なミックスタスクを持っています。実際にはコマンドをラップnpmし、出力をコマンドラインに返します:

defmodule Mix.Tasks.JsLint do
  use Mix.Task

  @shortdoc "Runs javascript lint"
  def run(_args) do
    System.cmd("npm", ["run", "lint"], into: IO.stream(:stdio, :line), stderr_to_stdout: true)
  end
end

問題はnpm run lint、コマンド ラインで実行すると、色付きの出力が返されることです。しかし、実行mix js_lintすると、色のない出力が返されます。

どこで色を失うのですか?どうすれば修正できますか?

更新 私はeslintを使用しています。

4

1 に答える 1

1

ここでの問題は、ほとんどの端末アプリケーションがisattystdout が対話型シェルであるかどうかをチェックするために (または同等のものを) 使用し、そうであれば色付きの出力を無効にして、色を変更するためのエスケープ シーケンスがログ ファイルなどに記録されないようにすることです。プロセスを生成し、そのプロセスに端末に接続されていると思わせる簡単な方法はわかりません(このようなものや、磁器のようなパッケージを使用するものがあります)が、を使用してeslintいるため、強制的に出力することができますインタラクティブに実行されていないと思われる場合でも、それに渡すことで色を変更--colorします。"lint"これを のエントリに追加できpackage.jsonます。したがって、古いエントリが次の場合:

"lint": "eslint ."

それを次のように変更します。

"lint": "eslint . --color"
于 2016-09-23T16:30:19.707 に答える