Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No way to force color in browser #132

Open
roman-khazanskii opened this issue Jan 28, 2022 · 9 comments
Open

No way to force color in browser #132

roman-khazanskii opened this issue Jan 28, 2022 · 9 comments

Comments

@roman-khazanskii
Copy link

As far as I could understand, browser.js ignores any means of color enforcing; FORCE_COLOR is ignored, now way of passing --color - and anyway, browser.js just returns 'false'.

Even though chrome console, for instance, does support ansi-color.

So if I need to force some other library, depending on this one, to give me back colorized output (that I can transform to html with smthn like ansi-html), I have to resort to monkey-patching.

@sindresorhus
Copy link
Member

How would you pass --color in the browser?

@sindresorhus
Copy link
Member

Even though chrome console, for instance, does support ansi-color.

const isBlinkBasedBrowser = /\b(Chrome|Chromium)\//.test(navigator.userAgent);

@roman-khazanskii
Copy link
Author

How would you pass --color in the browser?

There isn't any, that's exactly what I meant.

Even though chrome console, for instance, does support ansi-color.

Hmm, indeed, however I still got no color for some reason (maybe 'basic' was not enough for the library I was using, not sure).

Anyway, it would be nice if FORCE_COLOR would force color even in the browser; using env variable seems better than monkye-patching.

@Qix-
Copy link
Member

Qix- commented Jan 28, 2022

@sindresorhus we should make sure we're not bumping up against this: https://blog.chromium.org/2021/05/update-on-user-agent-string-reduction.html

@roman-khazanskii could you paste here the value of navigator.userAgent from your browser?

@roman-khazanskii
Copy link
Author

@Qix- sure - 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.113 Safari/537.36'

But I'm afraid you are missing my original point. I didn't actually need colors in my browser console, I wanted to transform ANSI-colored string to HTML (even though my browser console did support color as well, these things are not connected).

@Qix-
Copy link
Member

Qix- commented Jan 29, 2022

I have no idea what you're asking, then. This library doesn't do that, and none of chalk's code outputs HTML.

@roman-khazanskii
Copy link
Author

I have no idea what you're asking, then. This library doesn't do that, and none of chalk's code outputs HTML.

I know! I just want a way to force color support, that's all :) So other library will give me ANSI-colored text and then I will transform it to HTML.

Sorry if I'm not being very clear from the beginning; I just want to force-enable color support, even in the browser.

@j0hnm4r5
Copy link

j0hnm4r5 commented Aug 1, 2022

I'm bumping into this now —

chalk.supportsColor is returning false in v4.1.2 in Chrome 103.0.5060.134, and is subsequently not coloring any of the text.

But creating a new custom instance that forces color support with const customChalk = new chalk.Instance({level: 3}); does indeed output colored text.

User agent is Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36 for me, which makes isBlinkBasedBrowser return true.

@j0hnm4r5
Copy link

j0hnm4r5 commented Aug 1, 2022

Ah, I'm now seeing that Chalk v4 is using supports-color v7, which explicitly disables browser color support in browser.js.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants