Как отменить публикацию страницы Гэтсби, не удаляя ее? - PullRequest
1 голос
/ 04 апреля 2019

Я использовал стартер Gatsby для своего статического сайта, и одна из страниц, включенных в этот стартер, является демонстрационной страницей со всеми элементами пользовательского интерфейса.

Я хочу сохранить страницу (чтобы я мог скопироватьи вставьте из демоверсии), но не хотите быть общедоступными.Как мне «отменить публикацию», не удаляя файл?

Есть ли способ указать gatsby-node.js пропустить эту страницу при создании общедоступного сайта?

Ответы [ 3 ]

2 голосов
/ 04 апреля 2019

В качестве альтернативы можно добавить атрибут «опубликованный» в frontmatter, предполагая, что это страница уценки, которая может иметь значение true или false.Затем добавьте логику в файл gatsby-node.js, который просматривает это, чтобы определить, следует ли запускать createPage().

2 голосов
/ 05 апреля 2019

Множество хороших опций здесь, просто хочу бросить мою шляпу в кольцо для опций плагина, которые в первую очередь препятствуют созданию страниц:

Если это компонент страницы, т.е. внутри папки src/pages, gatsby используйте плагин с именем gatsby-plugin-page-creator для генерации страницы, и он недавно принимает шаблоны игнорирования.

Существует предупреждение, встроенный gatsby-plugin-page-creator не принимаетпользовательских параметров, поэтому нам придется переименовать папку страниц, чтобы игнорировать ее.

  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 .

В этом примере даже игнорируется файл, основанный на среде, что более полезно, поскольку вы все еще можете видеть свою ссылку во время разработки, но она не будет отображаться в сборке.

{
  resolve: `gatsby-source-filesystem`,
  options: {
    path: `${__dirname}/content`,
    ignore: process.env.NODE_ENV === `production` && [`**/draft-*`]
  }
}
2 голосов
/ 04 апреля 2019

Есть куча помощников Gatsby Node API , которые вы можете использовать, один из которых deletePage .

Если у вас есть страница src/pages/demo.js, это будетудалить эту страницу во время создания.

// gatsby-node.js
exports.onCreatePage = async ({ page, actions: { deletePage } }) => {
    if (page.path.match(/^\/demo/)) {
      deletePage(page)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...