Установка argv в package.json и запуск другого скрипта - PullRequest
1 голос
/ 26 октября 2019

У меня есть две версии моего приложения, для одной я установил --extended, а для другой нет, как это

"scripts": {
    "build": "webpack --mode production",
    "extended": "webpack --mode production --extended",
    // ...
 }

Теперь, в моем веб-пакете, я получаю доступ к расширенному, как это

module.exports = (_env,argv)=> {
   argv.extended
}

Я пытаюсь улучшить это кроссплатформенным способом, чтобы сделать что-то вроде

"scripts": {
    "build": "webpack --mode production",
    "extended": "--extended npm run build"       
  }

, чтобы запустить скрипт build из extended, но при этом получить доступ к --extendedпеременная.

Есть ли способ добиться этого? Спасибо

Я прочитал весь этот вопрос Как установить переменные окружения в package.json , но не могу найти способ

1 Ответ

1 голос
/ 31 октября 2019

Измените scripts раздел вашего package.json на следующее:

"scripts": {
  "build": "webpack --mode production",
  "extended": "npm run build -- --extended"
}

Объяснение:

Как указано вnpm-run-script документация, которую можно найти здесь :

... Специальная опция -- используется getopt для разграниченияконец вариантов. npm передает все аргументы после -- непосредственно в ваш скрипт:

Итак, по сути, когда вы запускаете следующую команду через CLI:

$ npm run extended

npm вызываетСценарий extended, который затем запускает сценарий build и передает аргумент --extended в его конец (т. Е. Он передает --extended в конец сценария build).


Есть ли другой способ?

Да, вы также можете рассмотреть возможность упрощения раздела scripts вашего package.json , полностью удалив сценарий extended.

Например:

"scripts": {
  "build": "webpack --mode production"
}

Затем вы можете выполнить одно из следующих действий:

  1. Выполнить следующую команду через CLI:

    $ npm run build
    

    Это будет вызывать ваш build скрипт без аргумента / опции --extended.

  2. Или выполните следующую команду через CLIвместо этого:

    $ npm run build -- --extended
    

    Это вызовет ваш build скрипт с аргументом / опцией --extended.

...