npm говорит, что файл .env не существует (но он есть), и он может даже напечатать его - PullRequest
1 голос
/ 22 января 2020

Все, что я хочу, это просто использовать переменную окружения в npm сценарии без установки ненужных зависимостей .

У меня есть файл .env в проекте root, содержащий

AWS_S3_BUCKET_ID=whatever

Мой package.json включает в себя следующие сценарии

"scripts": {
  "grep": "echo $(grep AWS_S3_BUCKET_ID .env | cut -d '=' -f2)",
  "source": "source .env && echo $AWS_S3_BUCKET_ID",
  "test-source": "[ -f .env ] && cat .env && npm run source"
},

Верьте или нет, npm run grep выполняется, а npm run source - нет.

Сейчас абсурдно то, что npm run source возвращается со следующим сообщением об ошибке

sh: line 0: source: .env: file not found

, а npm run test-source сначала печатает содержимое файла (!!), а затем говорит, что файл не существует.

Есть ли причина для такого поведения?

редактировать: я нахожусь на Linux

1 Ответ

0 голосов
/ 22 января 2020

Попробуйте это:

...
"source": ". ./.env && echo $AWS_S3_BUCKET_ID",
...

Мне не удалось заставить исходную команду вообще работать в Ubuntu по сценарию npm (sh: 1: источник: не найден), но это работал для меня с минимальным проектом, настроенным как ваш.

В этом ответе отмечено: { ссылка }

В стандарте POSIX, который / bin / sh должен уважать, команда есть. (одна точка), а не источник. Исходная команда - это csh -изм, который был перенесен в bash.

Вы также можете использовать пакет env-cmd из npm для кроссплатформенности, но кажется, ты в порядке, когда делаешь свои скрипты Linux.

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