Как мне не дать цветному выводу npm выглядеть ужасно в режиме Emacs term-mode?
При использовании npm в M-x term
, он генерирует цветное сообщение вот так (даже с -q):
Информация от what-cursor-position
There are text properties here:
font-lock-face (:foreground "red3" :background "black" :inverse-video nil)
fontified t
Это некрасиво, а также трудно читать в других темах, можно ли менять цвет на лету? Например, измените цвет текста, который соответствует npm http
, npm ERR!
Благодарю.
3 ответа
Вы можете отключить цвета в npm с помощью команды:
npm config set color false
Это не совсем отвечает на ваш вопрос, потому что это не способ переопределить цвета ANSI в term-mode, но это решит вашу проблему, так как вывод npm больше не будет уродливым и трудным для чтения.
Я создал обертку для npm
в https://github.com/davidchambers/dotfiles/pull/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's output,
# leaving the foreground colours intact.
NPM_CONFIG_COLOR=always "$(which npm)" "$@" \
1> >(__strip_background_colors $'\n' >&1) \
2> >(__strip_background_colors '' >&2)
}
Удаляет оскорбительные цвета фона, сохраняя довольно приятные цвета переднего плана.:)
С 2018 года:
https://github.com/npm/cli/commit/ecfbb16dc705f28aa61b3223bdbf9e47230a0fa4 Конфигурация: отключить цвет по умолчанию, когда$NO_COLOR
установлен (#19929).