Netflify CMS手动初始化(Gridsome)中的环境变量

时间:2020-03-09 09:02:06

标签: javascript environment-variables netlify-cms gridsome jamstack

我正在使用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。我尝试了许多不同的事情,并且我猜想我在这种情况下对环境变量有一些基本的误解。如果有人可以帮助我并向我解释这些内容或提供有效的解决方案,我将是一个快乐的人。

预先感谢并加油!

1 个答案:

答案 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在运行时可供客户端使用。