Xterm.js: 「colors」libで使用する方法は?

作成日 2017年08月18日  ·  20コメント  ·  ソース: xtermjs/xterm.js

https://github.com/Marak/colors.js
https://www.npmjs.com/package/colors
https://www.npmjs.com/package/chalk

これが上記のlibで動作するのを妨げるものはありますか? エスケープシーケンスを正しく処理する必要がありますか?

私はそれを機能させるのに問題があります、それは私がそれを機能させる方法を知らない、または代替カラーライブラリがより適しているというだけでそれがxterm.jsの問題であると言っているわけではありません。

最も参考になるコメント

@Tyriarわかりました、わかりました。

Chalkは、次のlibを使用して、何をサポートする必要があるかを確認するために自動検出を行っています: https ://github.com/chalk/supports-color

簡単に言うと、チョークは色に関しては何もサポートされていないと考えているため、文字列を処理しません。

let options: any = {enabled: true, level: 2};
const forcedChalk = new chalk.constructor(options);

^ブラウザで修正します

レベルは次のとおりです。

0: All colors disabled
1: Basic color support (16 colors)
2: 256 color support
3: Truecolor support (16 million colors)

全てのコメント20件

どのように使用していますか? 色付きの文字列を生成してから、それをxterm.jsインスタンスに直接書き込みますか?

はい、たとえば、 chalk (https://www.npmjs.com/package/chalk)で試してみました

terminal.writeln(chalk.blue('Hello') + ' World' + chalk.red('!'));

colors (https://www.npmjs.com/package/colors)でも試してみました

terminal.writeln(colors.green('Hello World'));

どちらの場合も出力は白黒です

色の正しいANSIエスケープコードを生成する限り、これが機能することを期待します。 xtermからの出力はどのように見えますか? 着色されていない文字列? スクリーンショットを送ってもらえますか?

image

私のために働く:

image

image

image

あなたは窓にいますか? もしそうなら、どのシェルを使用していますか?

ちょっと待ってください、ここではWindowsは重要ではありません。 これが機能するためにシェルを接続する必要はありません。

なぜそれがうまくいかないのかわかりません。 コンソールにエラーはありますか?

それが機能するノードreplからのYa、これは私が問題であるかもしれないと思うブラウザにあります。

@Tyriarはxterm.jsデモのchrome開発者コンソールで書いていたと思います(2番目のスクリーンショットterm.writeln... )。 彼が使用していたのと同じ文字列を試してみて、それがあなたのために機能するかどうかを確認できますか?

@Tyriarこれは、端末がバニラであり、xterm.jsを最初にセットアップするttyプロセスに接続されていない場合にも機能すると思いますか? xterm.jsがカラーモードを設定するために消費するシーケンスがあるかどうかを考えるだけです...

私のために働く
image

サーバーでメッセージをフォーマットすると、ブラウザでchalkを実行する代わりに、色が表示されます。 ブラウザでchalkを直接使用すると、色が表示されません。lemmeは、私が完全な馬鹿ではないことを確認するために、もう1つ試してみてください(すでに手遅れかもしれません)

@aventurellaは、$# chalkなしで$ term.writeln('\u001b[34mHello\u001b[39m World\u001b[31m!\u001b[39m')を直接実行してみてください。

@Tyriar ya、それはうまくいきます...

さて、これは、バンドル時にチョークするためにWebpackが何かをしているのではないかと思います。

ええ、それはチョークの問題のようです。チョークが返すものをログに記録するか、チョーク呼び出しにデバッグしてみてください。

xterm.jsには問題がないので締めくくりますが、その理由を知りたいと思います。

@Tyriarわかりました、わかりました。

Chalkは、次のlibを使用して、何をサポートする必要があるかを確認するために自動検出を行っています: https ://github.com/chalk/supports-color

簡単に言うと、チョークは色に関しては何もサポートされていないと考えているため、文字列を処理しません。

let options: any = {enabled: true, level: 2};
const forcedChalk = new chalk.constructor(options);

^ブラウザで修正します

レベルは次のとおりです。

0: All colors disabled
1: Basic color support (16 colors)
2: 256 color support
3: Truecolor support (16 million colors)

興味深いことに、チョークは環境変数などをチェックしてチェックしますか?

ありがとう@aventurella!

@Tyriar 、準備はいいですか? https://github.com/chalk/supports-color/blob/master/browser.js

ブーム。 チョークがその設定を作成するとき、それはsupports-colorに尋ねます。そして、それはブラウザのためにfalseを返します。

@cdaringeこれは、browserifyを介してビルドした場合にのみ発生しますか? 常にノードプロセスでチョークを実行しませんか? 😕

@Tyriar 、正解、ブラウザバンドラーrefを介して話しているim。 明確にするために、私の発言は、このパッケージの問題を強調することではなく、理解を深めるのに役立つことでした:)

@aventurellaありがとうございます! ただし、 chalk.constructorは非推奨であり、最新バージョンでは削除されている可能性があります。 代わりにchalk.Instanceを使用する必要があります。

このページは役に立ちましたか?
0 / 5 - 0 評価