如何解决为什么 Gatsby 源文件系统不能识别环境,只在 npm start 期间忽略?
阅读如何在构建时排除目录我在 Gatsby 中遇到了这个 issue,它表示忽略 gatsby-source-filesystem
中的目录,您可以根据 env
使用:
{
resolve: `gatsby-source-filesystem`,options: {
path: `${__dirname}/content`,ignore: process.env.NODE_ENV === `production` && [`**/draft-*`]
}
}
ref 但是当我尝试使用类似的方法时:
{
resolve: `gatsby-source-filesystem`,options: {
name: `designs`,path: `${__dirname}/src/designs/`,ignore: process.env.NODE_ENV === `production` && [`*`],},
它抛出一个终端错误:
“gatsby-source-filesystem”的无效插件选项:
- "ignore" 必须是一个数组
我在 gatsby-config.js 的顶部引入了 dotenv
:
require('dotenv').config({
path: `.env.${process.env.NODE_ENV}`,})
如果删除了 env
条件,它会起作用:
{
resolve: `gatsby-source-filesystem`,ignore: [`*`],
我正在阅读“How to unpublish a gatsby page without deleting it?”,这让我想到了这个问题。我对它在 npm run build
上的工作没有任何问题,仅使用 npm run develop
。在 Gatsby develop 中,有没有办法在 env 条件下使用 ignore?
解决方法
我不知道确切的原因,但我在使用不同的插件时遇到了同样的问题(比如为不同的环境生成不同的 sitemap.xml
或类似的东西)。我通过在 module.exports
范围之外生成变量来绕过它,例如:
require(`dotenv`).config({
path: `.env.${process.env.NODE_ENV}`
});
let ignore= process.env.NODE_ENV === `production` ? [`*`] : [];
module.exports = {
plugins: [
{
resolve: `gatsby-source-filesystem`,options: {
name: `designs`,path: `${__dirname}/src/designs/`,ignore: ignore,},]
如果需要,调整三元条件以添加 process.env.NODE_ENV === `production` && [`*`]
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。