Как я могу использовать SECRET_ENV в скриптах npm внутри package.json? - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть секретный ключ с именем API_KEY, к которому я хочу получить доступ внутри package.json scripts.

package.json

{
   "scripts": {
      "start": "web-ext run --api-key=API_KEY"
   }
}

My .envфайл содержит API_KEY:

API_KEY=abc123

Как я могу получить доступ к значению API_KEY внутри package.json scripts, сохраняя при этом его в секрете, потому что мне нужно публично нажать package.json?

В настоящее время я делаю следующее, которое работает, но не кросс-платформенное:

package.json

{
   "scripts": {
      "start": "web-ext run --api-key=$API_KEY"
   }
}

А при запуске сценария start я делаю это следующим образом:

API_KEY=abc123 npm start

Это работает благодаря языку программирования Bash, но не работает в Windows.Мне нужно заменить $API_KEY в start скрипте на %API_KEY%.Но я хочу, чтобы он был кроссплатформенным.Есть ли другой способ?

Ответы [ 2 ]

0 голосов
/ 22 сентября 2019

Для кроссплатформенности

1) Вы можете использовать 'npm env-cmd ' в качестве devDependencies.

Настройка среды из файла

Использование

Файл среды ./.env

# This is a comment
API_KEY=abc123

Package.json

{
  "scripts": {
    "start": "env-cmd web-ext run"
  }
}

2) Вы можете использовать 'npm cross-env ' как devDependencies.

Запускать сценарии, которые устанавливают и используют переменные среды на разных платформах

Использование

{
  "scripts": {
    "start": "cross-env API_KEY=abc123 web-ext run"
  }
}

Только для Windows

Вы можете попробовать что-то вроде этого:

cmd /C "set API_KEY=abc123 && npm start"

Как говорит Viper_Sb здесь :

/ C сразу после запуска выходит из нового cmd, если вы создадите вывод с новым, он все равно будет виден в родительском окне.

Вы можете использовать / K, и в этом случае новое окно cmd остается открытым в конце цикла.

0 голосов
/ 22 сентября 2019

Вы можете просто потребовать "dotenv" lib и получить доступ к var из process.env. {SOME_KEY}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...