NOTE: This is NOT about sending args to the top-level script, but to the script called by that script
In my package.json, when I call a script that takes command line args directly, it works. But when I call a script that calls that other script, it's not passing the command line args to it. How do i pass them?
{
...
"takes-args": "somemodule",
"calls-takes-args": "npm run takes-args"
}
When i run the below command, the args come through:
npm run takes-args -- -env dev
But when I run it through the other script, it never gets the args. Is there some way to pass them down? Maybe by a variable marker like a dollar sign?
//The top-level script gets the args, BUT takes-args does NOT
npm run calls-takes-args -- -env dev
Is there any way?
Your scripts
field should look like this:
{
...
"takes-args": "somemodule",
"calls-takes-args": "npm run takes-args --"
}
Notice the --
at the end of calls-takes-args
.
Anything you pass after the --
is directly appended onto the script you are running. When you run npm run calls-takes-args -- -env dev
, that is the equivalent of running npm run takes-args -env dev
. Of course, that does not work.
If you add the --
to calls-takes-args
, when you run npm run calls-takes-args -- -env dev
, npm run
runs npm run takes-args -- -env dev
. Success!
If you don't pass any args to calls-takes-args
, the trailing --
won't hurt.
Edit:
If you can't/don't want to modify your package.json
, you can run
npm run calls-takes-args -- -- -env dev
That will run somemodule -env dev
.
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