我正在使用Gridsome和Netlify CMS构建一个网站,该网站由Netlify托管。
Netlify CMS内容位于{permissionsPrint: permissionsPrint}
中。
我正在/static/admin
中手动初始化Netlify CMS,以根据环境变量更改其推送到的分支。
index.js
我正在const branch = window.GRIDSOME_CMS_BRANCH || "develop"
window.CMS_MANUAL_INIT = true
const { CMS, initCMS: init } = window
init({
config: {
backend: {
branch: `${branch}`
},
},
})
文件中设置这些环境变量,如下所示:
netlify.toml
但是,当我构建并导航到[context.release.environment]
GRIDSOME_CMS_BRANCH = "release"
[context.stage.environment]
GRIDSOME_CMS_BRANCH = "stage"
[context.develop.environment]
GRIDSOME_CMS_BRANCH = "develop"
以访问CMS时,分支始终为mysite.com/admin
,环境变量为develop
。我尝试了许多不同的事情,并且我猜想我在这种情况下对环境变量有一些基本的误解。如果有人可以帮助我并向我解释这些内容或提供有效的解决方案,我将是一个快乐的人。
预先感谢并加油!
答案 0 :(得分:0)
我有一个类似的问题,使用本文中介绍的技术解决了 https://medium.com/@trekinbami/using-environment-variables-in-react-6b0a99d83cf5
如果您需要访问客户端的环境变量(这是Netlify CMS的初始化位置),则可以在构建时使用webpack为您存储该值。
您可以在Netlify CMS的webpack配置中执行以下操作:
const webpack = require('webpack');
const getRepoInfo = require('git-repo-info')
const { branch } = getRepoInfo()
module.exports = () => {
return {
plugins: [
new webpack.DefinePlugin({
'process.env.GRIDSOME_CMS_BRANCH': JSON.stringify(branch)
})
]
};
以上代码在构建时在服务器上执行,但使变量process.env.GRIDSOME_CMS_BRANCH
在运行时可供客户端使用。