【问题标题】:How to unpublish a gatsby page without deleting it?如何取消发布 gatsby 页面而不删除它?
【发布时间】:2019-04-04 15:38:09
【问题描述】:

我为我的静态网站使用了 Gatsby 启动器,该启动器中包含的页面之一是包含所有 UI 元素的演示页面。

我想保留该页面(以便我可以从演示中复制和粘贴),但不想公开。如何在不删除文件的情况下“取消发布”?

有没有办法告诉 gatsby-node.js 在生成面向公众的网站时跳过该页面?

【问题讨论】:

    标签: reactjs gatsby


    【解决方案1】:

    您可以使用一堆Gatsby Node API helpers,其中一个是deletePage

    如果您有一个页面src/pages/demo.js,这将在创建过程中删除该页面。

    // gatsby-node.js
    exports.onCreatePage = async ({ page, actions: { deletePage } }) => {
        if (page.path.match(/^\/demo/)) {
          deletePage(page)
        }
    }
    

    【讨论】:

    • 这对我来说最简单,我刚刚添加了 process.env.NODE_ENV === production &&
    【解决方案2】:

    这里有很多不错的选择,只是想把我的帽子放在戒指中,以防止首先创建页面的插件选项:

    如果它是一个页面组件,即在src/pages文件夹内,gatsby使用一个名为gatsby-plugin-page-creator的插件来生成页面,它最近接受了一个忽略模式。

    需要注意的是,内置的 gatsby-plugin-page-creator 不接受用户选项,因此我们必须重命名 pages 文件夹以忽略它。

      root
        └── src
    -        └── pages
    +        └── screens  <-- rename
                   └── index.js
                   └── ignore-file-name.js
    

    然后在 gatsby-config.js 中:

    module.exports = {
      plugins: [
        {
          resolve: `gatsby-plugin-page-creator`,
          options: {
            path: `${__dirname}/src/screens`,
            ignore: [`ignore-file-name.js`],
          },
        },
      ]
    }
    

    如果它是从 markdown 或 json 以编程方式生成的页面,您可能可以在 gatsby-source-file-system 中忽略它,正如 github comment 中所指出的那样。

    那里的示例甚至忽略了基于环境的文件,这更有用,因为您仍然可以在开发过程中看到您的参考,但它不会在构建中显示。

    {
      resolve: `gatsby-source-filesystem`,
      options: {
        path: `${__dirname}/content`,
        ignore: process.env.NODE_ENV === `production` && [`**/draft-*`]
      }
    }
    

    【讨论】:

      【解决方案3】:

      另一种方法是在 frontmatter 中添加一个“已发布”属性,假设它是一个可以是 true 或 false 值的 markdown 页面。然后将逻辑添加到您的 gatsby-node.js 文件中,该文件查看此以确定是否运行 createPage()

      【讨论】:

        猜你喜欢
        • 2010-11-05
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多