I am running Node 6.9.5 and NPM 3.10.10 on a Windows 7 machine. My terminal is Cygwin 2.877.
If I try to run the following in Cygwin, it works fine:
mkdir mydir/mysubdir;
However, if I put it into a package.json
file instead, e.g.:
"scripts": {
"test": "mkdir mydir/mysubdir"
},
and run:
npm run test
It fails with:
The syntax of the command is incorrect.
After Googling the above, it seems to be a Windows Command Prompt error, not a Cygwin one. As such, it seems that NPM is trying to run the script using the Command Prompt rather than the existing Cygwin environment.
How can I fix this? Or rather, how can I make sure NPM runs scripts in the terminal environment it is being invoked from?
If you want it to run in bash then put this in package.json
:
"scripts": {
"test": "bash test.sh"
},
and put this in test.sh
:
#!/bin/bash
mkdir mydir/mysubdir
Or, as csvan pointed out in the comment, you can use Node scripts instead of shell scripts:
"scripts": {
"test": "node test.js"
},
This approach is even better for cross-platform compatibility.
See also:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With