在Gatsby配置文件中使用对象

时间:2019-05-16 16:29:17

标签: gatsby

我正在尝试更好地组织我的gatsby配置文件,但是我不确定我做对了。有人知道以下设置是否可以工作:

module.exports = {
  plugins: [
    { gatsby_plugin__manifest },
    { gatsby_source__file_system__images },
    { gatsby_source__file_system__posts },
  ],
};

const gatsby_plugin__manifest = {
  resolve: `gatsby-plugin-manifest`,
  options: {
    name: `gatsby-starter-default`,
    short_name: `starter`,
    start_url: `/`,
    background_color: `#663399`,
    theme_color: `#663399`,
    display: `minimal-ui`,
    icon: `src/images/gatsby-icon.png`, // This path is relative to the root of the site.
  },
}

const gatsby_source__file_system__images = {
  resolve: `gatsby-source-filesystem`,
  options: {
    name: `images`,
    path: `${__dirname}/src/images`,
  },
}

const gatsby_source__file_system__posts = {
  resolve: `gatsby-source-filesystem`,
  options: {
    name: `posts`,
    path: `${__dirname}/src/posts/`,
  },
}

我说gatsby_plugin__manifest is not defined时出错,我想知道是否是因为我如何设置文件?

2 个答案:

答案 0 :(得分:3)

我在这里看到两个问题:

根据Gatbsy文档,plugins是字符串或对象的数组。在ES6中,{ gatsby_plugin__manifest },是键值对{ gatsby_plugin__manifest: gatsby_plugin__manifest }的简写。删除对象语法可以解决该问题。

第二,出于this answer中所述的原因,在导出中引用gatsby_plugin__manifest之前声明ReferenceError

对于这些插件之一,总结这些建议:

// Declare gatsby_plugin__manifest before export
const gatsby_plugin__manifest = {
  resolve: `gatsby-plugin-manifest`,
  options: {
    // ...configuration here
  },
}

// Remove object syntax around gatsby_plugin__manifest
module.exports = {
  plugins: [
    gatsby_plugin__manifest,
  ],
};

Gatsby Config Docs

答案 1 :(得分:1)

使用constlet声明的变量不会被吊起,因此在声明之前不能引用它们。将module.exports放在声明下面,它应该可以工作。