Как я могу остановить цветной выход npm из-за уродливости в режиме Emacs?

При использовании npm в M-x term он генерирует цветное сообщение, подобное этому (даже с -q):

inverse color

Информация из what-cursor-position

There are text properties here:
font-lock-face       (:foreground "red3" :background "black" :inverse-video nil)
fontified            t

Это уродливо, а также трудно читать в других темах, возможно ли изменить цвет на лету? Например, измените цвет текста, который соответствует npm http, npm ERR!

Спасибо.

Ответ 1

Вы можете отключить цвета в npm с помощью команды:

npm config set color false

Это точно не отвечает на ваш вопрос, так как это не способ переопределить цвета ANSI в режиме term-mode, но это решит вашу проблему, поскольку вывод npm больше не будет уродливым и трудно читаемым.

Ответ 2

Я создал обертку для npm в davidchambers/dotfiles # 1. Здесь полный код:

__strip_background_colors() {
  local output="$(sed $'s:\x1B\[4[0-9]m::g')"
  [[ -n $output ]] && printf %s%s "$output" "$1"
}

npm() {
  # Strip the visually offensive background colours from npm output,
  # leaving the foreground colours intact.
  NPM_CONFIG_COLOR=always "$(which npm)" "[email protected]" \
    1> >(__strip_background_colors $'\n' >&1) \
    2> >(__strip_background_colors '' >&2)
}

Он удаляет оскорбительные цвета фона, сохраняя при этом довольно приятные цвета переднего плана.:)