Xterm.js: كيف تستخدم مع "الألوان" ليب؟

تم إنشاؤها على ١٨ أغسطس ٢٠١٧  ·  20تعليقات  ·  مصدر: xtermjs/xterm.js

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

وهل هناك ما يمنع هذا من العمل مع الليب المذكور اعلاه؟ ينبغي فقط التعامل مع تسلسل الهروب الصحيح؟

أواجه مشكلة في تشغيلها ، وهذا لا يعني أنها مشكلة مع 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 مهمًا هنا. لن تحتاج حتى إلى غلاف متصل حتى يعمل هذا.

لست متأكدًا من سبب عدم نجاحها معك. أي أخطاء في وحدة التحكم؟

يا من العقدة أعادتها تعمل ، هذا في المتصفح الذي أعتقد أنه قد يكون المشكلة.

أعتقد أن Tyriar كان يكتب في وحدة تحكم مطور Chrome في العرض التوضيحي xterm.js (انظر لقطة الشاشة الثانية ، term.writeln... ). هل يمكنك تجربة نفس السلسلة التي كان يستخدمها ومعرفة ما إذا كانت تعمل من أجلك؟

Tyriar هل تعتقد أن هذا سيعمل أيضًا إذا كانت المحطة الطرفية الفانيليا ولم تكن متصلة بعملية tty التي تقوم بإعداد xterm.js أولاً؟ مجرد التفكير في وجود أي تسلسلات يستهلكها xterm.js لضبط وضع الألوان ...

تناسبني
image

إذا قمت بتنسيق الرسالة على الخادم ، فبدلاً من تشغيل chalk في المتصفح ، أحصل على ألوان. إذا استخدمت chalk مباشرة في المتصفح ، فلن أحصل على أي ألوان .. حاول شيئًا آخر لتتأكد من أنني لست مجرد أحمق تمامًا (ربما فات الأوان بالفعل)

aventurella حاول تشغيل term.writeln('\u001b[34mHello\u001b[39m World\u001b[31m!\u001b[39m') مباشرة بدون chalk .

MustafaHosny اللهم امين ...

الآن هذا يجعلني أتساءل عما إذا لم يكن 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

فقاعة. عندما ينشئ chalk التكوين الخاص به ، فإنه يسأل support-color ، والتي تُرجع false للمتصفح.

cdaringe هل يحدث هذا فقط عند الإنشاء عبر browserify؟ ألا تقوم دائمًا بتشغيل الطباشير من خلال عملية العقدة؟ 😕

Tyriar ، صحيح ، أنا أتحدث عبر حزمة متصفح المرجع . للتوضيح ، لم تكن ملاحظتي لتسليط الضوء على أي مشكلة في هذه الحزمة ، بل فقط للمساعدة في زيادة الفهم :)

aventurella شكرا لك! ولكن يبدو أن chalk.constructor مهمل وربما تمت إزالته في أحدث الإصدارات. يجب علينا استخدام chalk.Instance بدلاً من ذلك.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات