postcss / postcss-cli

CLI for postcss
Other
824 stars 93 forks source link

Allow non-TTY stdin watch mode #446

Closed 0xradical closed 1 year ago

0xradical commented 1 year ago

The presence of stdin doesn't necessarily mean there's an allocated tty. This breaks watch mode in non-TTY stdin contexts (e.g. docker, foreman, etc). A simple process.stdin.isTTY check would theoretically be enough but unfortunately, subprocesses don't have the same API, which are used extensively to test via calls to spawn.

A simple solution is to inject an env var dependency where we tell the process that it's indeed a TTY-allocated process and so, watch mode with exit handling is good to go.

A more robust but also annoying solution would involve using an actual terminal emulator (like Microsoft's node-pty). Though the environment gets exponentially more difficult to setup since it involves compiling bindings, which require different requirements per OS.

Closes https://github.com/postcss/postcss-cli/pull/424

RyanZim commented 1 year ago

@0xradical I assume c58170c751d019f269a5439b7b157212f11258c6 was mistakenly pushed here?

RyanZim commented 1 year ago

Otherwise, code looks good, but I want to test it out a bit before I merge.

0xradical commented 1 year ago

@0xradical I assume c58170c was mistakenly pushed here?

Yes, I will create a separate branch with cleaned up history

RyanZim commented 1 year ago

Replaced by https://github.com/postcss/postcss-cli/pull/448