Переменные среды в ручной инициализации Netflify CMS (Gridsome) - PullRequest
2 голосов
/ 09 марта 2020

Я создаю веб-сайт с Gridsome и Netlify CMS, размещенный на Netlify. Материал Netlify CMS находится в /static/admin. Я вручную инициализирую CMS Netlify в 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, например this:

[context.release.environment]
    GRIDSOME_CMS_BRANCH = "release"

[context.stage.environment]
    GRIDSOME_CMS_BRANCH = "stage"

[context.develop.environment]
    GRIDSOME_CMS_BRANCH = "develop"

Но когда я создаю и перехожу на mysite.com/admin для доступа к CMS, ветвь всегда имеет значение develop, а переменная среды - undefined. Я пробовал много разных вещей, и я предполагаю, что у меня есть неправильное представление о переменных среды в этом контексте. Я был бы счастлив, если бы кто-нибудь мог помочь мне и объяснить мне эти вещи или предоставить рабочее решение.

Заранее спасибо и ура!

1 Ответ

0 голосов
/ 03 апреля 2020

У меня была похожая проблема, которую я решил, используя технику, описанную в этой статье https://medium.com/@trekinbami / using-environment-variable-in-реагировать-6b0a99d83cf5

Если вам нужен доступ переменные среды на стороне клиента (именно здесь инициализируется CMS Netlify), вы можете использовать веб-пакет для хранения этого значения во время сборки.

Вы можете сделать что-то подобное в конфигурации веб-пакета для Netlify CMS. :

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 доступной для клиента во время выполнения.

...