Использование конфигурации Next во время сборки
@ DarrylR уже упоминалось с использованием next.config.js
и
Следующая конфигурация времени выполнения ,
но вы также можете использовать конфигурацию Next * .
.
Это позволяет вам вставить process.env.XXXX
прямо в код (как показано в шаге 3 ниже), и вам не нужно ничего импортировать. Однако если переменные env должны быть установлены как при локальной сборке с Next.js , так и при развертывании на ZEIT Now , я не знаю, сможете ли вы сохранить их просто один файл с использованием этого метода (см. шаг 2 ниже).
Документы по настройке среды выполнения предполагают, что вы обычно хотите использовать конфигурацию во время сборки:
Предупреждение: Как правило, вы хотите использовать конфигурацию во время сборки для обеспечения вашей конфигурации. Причина этого заключается в том, что конфигурация во время выполнения добавляет накладные расходы на рендеринг / инициализацию и является несовместимой с автоматическим предварительным рендерингом .
Шаги:
1. Установите NODE_ENV
для процесса сборки
Если вы развертываете с использованием ZEIT Now, вы можете установить переменные env, используемые во время сборки в now.json
:
{
"version": 2,
"build": {
"env": {
"NODE_ENV": "production"
}
}
}
1.2 При локальном запуске (опция)
Если вы хотите, чтобы NODE_ENV
также устанавливался при локальном запуске, он не будет установлен now.json
.
Однако вы можете установить его другими способами, такими как:
$ NODE_ENV=production npm run build
или измените скрипт сборки в package.json
на
"build": "NODE_ENV=production next build"
Конечно, вы также можете установить NODE_ENV
для других сценариев, кроме build, если хотите.
2. Сделать следующее встроенное значение process.env.NODE_ENV
Добавьте это к next.config.js
, как описано здесь :
module.exports = {
env: {
NODE_ENV: process.env.NODE_ENV
}
};
3. Используйте в коде
if (process.env.NODE_ENV === "production") {
console.log("In production")
} else {
console.log("Not in production")
}