我建立了一个静态网站使用gatsbyJS和prismic.io作为一个无头的CMS。有人知道如何在构建网站(gatsby build)时使用不同的配置(例如: gatsby config 1/ gatsby config 2)。最终目标是使用Jenkins使用相同的代码库(但css/config )自动构建不同的站点。
发布于 2021-04-29 15:48:49
嗯,它并不是使用“不同的gatsby-config.js”文件,但最相似的方法是使用环境变量。这将允许您对不同的设置使用相同的gatsby-config.js。
默认情况下,盖茨比在运行development和gatsby build时使用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}`})部件。
https://stackoverflow.com/questions/67319966
复制相似问题