Как можете да използвате различни конфигурации, когато създавате уебсайт (Gatsby build)

Създадох статичен уебсайт, използвайки gatsbyJS и prismic.io като CMS без глава. Някой знае ли как да използва различни конфигурации при изграждане на уебсайта (gatsby build) (например: gatsby config 1 / gatsby config 2). Крайната цел е да се използва Jenkins за автоматично изграждане на различни сайтове с една и съща кодова база, но различен css/config.


person Jules-B    schedule 29.04.2021    source източник


Отговори (1)


Е, не се използват точно различни gatsby-config.js файлове, но най-сходният подход е използването на променливи на средата. Това ще ви позволи да използвате същия gatsby-config.js с различни настройки.

Gatsby по подразбиране използва development и production като среди, когато изпълнява съответно gatsby develop и gatsby build (можете да замените това поведение по желание, като използвате персонализираните си среди). По този начин трябва да кажете на Гетсби къде са зададени тези променливи. Това се прави от следния фрагмент (в gatsby-config.js):

require("dotenv").config({
  path: `.env.${process.env.NODE_ENV}`,
})

Ако създадете .env.development и .env.production в основата на вашия проект, можете просто да направите:

GATSBY_API_URL=https://example.com/api
API_KEY=927349872349798

Сега във всеки конфигурационен параметър можете да използвате променливите на средата, съхранени в тези файлове като:

module.exports = {
  plugins: [
    {
      resolve: `gatsby-source-patronus`,
      options: {
        apiKey: process.env.API_KEY,
      },
    },
  ],
}

Разширявайки това поведение, можете да персонализирате изпълняваните команди да използват различни файлове на средата като .env.siteOne и .env.siteTwo, като просто променяте и създавате свои собствени скриптове във вашия package.json и използвате променливата GATSBY_ACTIVE_ENV:

 "scripts": {
    "build-site-one": "GATSBY_ACTIVE_ENV=siteOne gatsby build",
    "build-site-two": "GATSBY_ACTIVE_ENV=siteTwo gatsby build",
  },

Просто тичам:

 npm run build-site-one

Ще вземете променливите на средата, съхранени във файла .env.siteOne, за да можете да посочите различна конфигурация на CMS, различни теми, различни маршрути и пътища и т.н.


Отказ от отговорност: целият процес има за цел да използва променливи от страната на сървъра за промяна на някои конфигурации/параметри. За да използвате променливите от страна на клиента (JavaScript), можете да пропуснете частта require("dotenv").config({ path: `.env.${process.env.NODE_ENV}`}).

person Ferran Buireu    schedule 29.04.2021