Xterm.js: Comment utiliser avec la bibliothèque "colors" ?

Créé le 18 août 2017  ·  20Commentaires  ·  Source: xtermjs/xterm.js

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

Y a-t-il quelque chose qui empêche cela de fonctionner avec la bibliothèque mentionnée ci-dessus ? Il ne devrait s'agir que des séquences d'échappement, n'est-ce pas ?

J'ai un problème pour le faire fonctionner, ce qui ne veut pas dire que c'est un problème avec xterm.js juste que je ne sais pas comment le faire fonctionner ou qu'une bibliothèque de couleurs alternative serait mieux adaptée.

Commentaire le plus utile

@Tyriar ok j'ai compris ..

Chalk effectue une détection automatique pour voir ce qu'il devrait prendre en charge, en utilisant cette bibliothèque : https://github.com/chalk/supports-color

Pour faire court, la craie pense que rien n'est pris en charge en termes de couleur, donc elle ne traite pas les chaînes.

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

^ le corrige dans le navigateur

où les niveaux sont :

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

Tous les 20 commentaires

Comment l'utilisez-vous ? Générez-vous une chaîne colorée, puis écrivez-la directement dans l'instance xterm.js ?

Oui, par exemple, je viens de l'essayer avec chalk (https://www.npmjs.com/package/chalk)

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

Je l'ai aussi essayé avec colors (https://www.npmjs.com/package/colors)

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

et la sortie est en noir et blanc dans les deux cas

Je m'attendrais à ce que cela fonctionne, tant qu'il génère les codes d'échappement ansi corrects pour la couleur. À quoi ressemble la sortie de xterm ? Une ficelle incolore ? Pouvez-vous envoyer une capture d'écran ?

image

Travaille pour moi:

image

image

image

Êtes-vous sur les fenêtres? Si oui, quel shell utilises-tu ?

Oh, attendez, Windows ne devrait pas avoir d'importance ici. Vous n'auriez même pas besoin d'un shell connecté pour que cela fonctionne.

Je ne sais pas pourquoi cela ne fonctionne pas pour vous. Des erreurs dans la console ?

Ya du node repl ça marche, c'est dans le navigateur qui je pense pourrait être le problème.

Je pense que @Tyriar écrivait dans la console développeur chrome de la démo xterm.js (voir la deuxième capture d'écran, term.writeln... ). Pourriez-vous essayer avec la même chaîne qu'il utilisait et voir si cela fonctionne pour vous ?

@Tyriar Pensez-vous que cela fonctionnerait également si le terminal est vanille et n'était pas connecté à un processus tty qui configure d'abord xterm.js? Je pense juste s'il y a des séquences que xterm.js consomme pour définir le mode couleur...

Travaille pour moi
image

Si je formate le message sur le serveur, au lieu d'exécuter chalk dans le navigateur, j'obtiens des couleurs. Si j'utilise chalk directement dans le navigateur, je n'obtiens aucune couleur. Laissez-moi essayer encore une chose pour être sûr que je ne suis pas juste un idiot total (il est peut-être déjà trop tard)

@aventurella essayez d'exécuter le term.writeln('\u001b[34mHello\u001b[39m World\u001b[31m!\u001b[39m') directement sans chalk .

@Tyriar ya, ça marche bien...

Maintenant, cela me fait me demander si ce n'est pas Webpack qui fait quelque chose à la craie au moment du bundle.

Oui, cela ressemble à un problème de craie alors, essayez de consigner la craie qui revient ou de déboguer dans l'appel de craie.

Fermeture puisque ce n'est pas un problème avec xterm.js, je suis curieux d'entendre la raison cependant.

@Tyriar ok j'ai compris ..

Chalk effectue une détection automatique pour voir ce qu'il devrait prendre en charge, en utilisant cette bibliothèque : https://github.com/chalk/supports-color

Pour faire court, la craie pense que rien n'est pris en charge en termes de couleur, donc elle ne traite pas les chaînes.

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

^ le corrige dans le navigateur

où les niveaux sont :

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

Intéressant, la craie vérifie-t-elle en vérifiant les variables d'environnement ou quelque chose?

merci @aventurella!

@Tyriar , prêt ? https://github.com/chalk/supports-color/blob/master/browser.js

boom. lorsque la craie crée sa configuration, elle demande supports-color, qui renvoie false pour le navigateur.

@cdaringe Cela ne se produit-il que lorsque vous construisez via browserify ? Ne faites-vous pas toujours passer la craie à travers un processus de nœud ? 😕

@Tyriar , c'est correct, je parle via un bundler de navigateur ref . pour clarifier, ma remarque n'était pas de mettre en évidence un problème avec ce paquet, mais simplement d'aider à mieux comprendre :)

@aventurella merci ! mais il semble que chalk.constructor soit obsolète et ait peut-être été supprimé dans les dernières versions. Nous devrions utiliser chalk.Instance la place.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

circuitry2 picture circuitry2  ·  4Commentaires

jestapinski picture jestapinski  ·  3Commentaires

tandatle picture tandatle  ·  3Commentaires

LB-J picture LB-J  ·  3Commentaires

Mlocik97-issues picture Mlocik97-issues  ·  3Commentaires