Я использовал этот учебник: https://github.com/gatsbyjs/gatsby/blob/master/docs/docs/environment-variables.md
Шаги, которые я сделал:
1) установить [email protected]
2) Создайте в корневой папке два файла: «.env.development» и «.env.production».
3) "следуйте их инструкциям по установке" (пример в документации dotenv npm)
In gatsby-config.js
:
const fs = require('fs');
const dotenv = require('dotenv');
const envConfig =
dotenv.parse(fs.readFileSync(`.env.${process.env.NODE_ENV}`));
for (var k in envConfig) {
process.env[k] = envConfig[k];
}
К сожалению, когда я запускаю gatsby develop
, NODE_ENV
еще не установлен:
error Could not load gatsby-config
Error: ENOENT: no such file or directory, open 'E:\Front-End Projects\Gatsby\sebhewelt.com\.env.undefined'
Работает, когда я выставляю вручную:
dotenv.parse(fs.readFileSync(`.env.development`));
Мне нужны переменные среды в gatsby-config, потому что я помещаю конфиденциальные данные в этот файл:
{
resolve: `gatsby-source-contentful`,
options: {
spaceId: envConfig.CONTENTFUL_SPACE_ID,
accessToken: envConfig.CONTENTFUL_ACCESS_TOKEN
}
}
Как заставить работать?
PS: Дополнительный вопрос - поскольку это заставило меня задуматься, я знаю, что мне не следует размещать пароли и токены на github, но, поскольку netlify строит из github, есть ли другой безопасный способ?