Я также не смог найти встроенного решения для этого на Гэтсби. Вы можете сделать это вручную, но все же не так просто.
Первая проблема: если вы хотите загрузить среду из файла во время выполнения сценария npm; его нельзя сразу загрузить. Но вы можете запустить файл сценария, и он может загрузить эти переменные среды перед вашей проверкой.
скажем build.sh
в корневом каталоге проекта:
source ./.env.development # this line will set env variables
if [ "$API_KEY" = 927349872349798 ] ; then
npm run build
fi
Возникает другая проблема; некоторые разработчики могут захотеть запустить его в Windows. Так что лучше используйте известный пакет cross-env.
npm i cross-env
Тогда все готово, добавляем свой secure-build
:
"scripts": {
"build": "gatsby build",
"develop": "gatsby develop",
"format": "prettier --write \"**/*.{js,jsx,json,md}\"",
"start": "npm run develop",
"serve": "gatsby serve",
"clean": "gatsby clean",
"test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\" && exit 1",
"secure-build": "cross-env-shell \"./build.sh\""
},
И запускаем его:
npm run secure-build
Мне это решение кажется слишком большим, поскольку мы создали build.sh и установили новый пакет. Может есть более чистое решение. В конце концов, я не гуру Гэтсби.
person
Kerem atam
schedule
12.06.2020