Передача аргументов командной строки в сценарий npm 'pre' и сценарий с несколькими командами

Есть ли способ передать аргументы командной строки предварительному сценарию npm или сценарию, который запускает несколько команд?

Предполагая простой скрипт mySexyScript.js, который просто выходит из процесса process.argv :

console.log(process.argv);

Это работает

С помощью npm-скрипта:

...
"scripts": {
    ....
    "sexyscript": "node mySexyScript.js"
    ....
}
...

Бег:

npm run sexyscript -- --foo=bar

аргументы записываются в консоль, как и ожидалось.

'предварительный' скрипт – это не работает

С помощью npm-скрипта:

...
"scripts": {
    ....
    "presexyscript": "node mySexyScript.js"
    "sexyscript": "node mySuperSexyScript.js"
    ....
}
...

Бег:

npm run sexyscript -- --foo=bar

аргументы не передаются в mySexyScript и не регистрируются

Несколько команд — это тоже не работает

С помощью npm-скрипта:

...
"scripts": {
    ....
    "sexyscript": "node mySexyScript.js && node mySuperSexyScript.js"
    ....
}
...

Бег:

npm run sexyscript -- --foo=bar

аргументы не передаются в mySexyScript и не регистрируются


person Fraser    schedule 27.02.2017    source источник


Ответы (1)


Невозможно передать аргументы так, как вы описываете.

Предполагая package.json:

...
"scripts": {
    ....
    "somescript": "node one.js && node two.js"
    ....
}
...

Бег:

npm run somescript -- --foo=bar

в основном просто бегает

node one.js && node two.js --foo=bar

в системной оболочке по умолчанию (обычно bash или cmd.exe).

npm на самом деле ничего не знает об операторах оболочки (т.е. &&), поэтому он не может передавать аргументы обоим сценариям.

person RyanZim    schedule 27.02.2017