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.
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 ?
Travaille pour moi:
Ê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
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.
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.
^ le corrige dans le navigateur
où les niveaux sont :