我在 Gatsby 上也找不到内置解决方案。您可以手动完成,但仍然不太容易。
第一个问题:如果你想在运行 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 并安装了一个新包时,这个解决方案对我来说太过分了。也许有更清洁的解决方案。毕竟我不是盖茨比大师。