This problem may be Windows-specific. I have not tested it on Linux or Mac.
I use:
node my-cli.js > foo.txt
: Error output is not a tty
node my-cli.js < foo.txt
: Error input is not a tty
.
Create a file my-cli
:
#!/bin/sh
node "path/to/my-cli.js" "$@"
exit $?
Call ./my-cli > foo.txt
or ./my-cli < foo.txt
.
This also works with arguments: ./my-cli --answer 42 > foo.txt