postcss / postcss-cli

CLI for postcss
Other
824 stars 93 forks source link

Allow non-TTY stdin watch mode #448

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, and they are used extensively for testing via calls to the function 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