我使用了一个Gatsby starter建立了我的静态站点,其中包含一个演示页面,展示了所有的UI元素。我想保留这个页面(以便从演示中复制粘贴内容),但不想公开它。如何“取消发布”而不删除该文件?有没有办法告诉gatsby-node.js在生成面向公众的站点时跳过该页面?
有许多Gatsby Node API助手可供使用,其中之一是deletePage。
如果您有一个名为src/pages/demo.js
的页面,则在创建期间将删除该页面。
// gatsby-node.js
exports.onCreatePage = async ({ page, actions: { deletePage } }) => {
if (page.path.match(/^\/demo/)) {
deletePage(page)
}
}
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`],
},
},
]
}
{
resolve: `gatsby-source-filesystem`,
options: {
path: `${__dirname}/content`,
ignore: process.env.NODE_ENV === `production` && [`**/draft-*`]
}
}
gatsby-node.js
文件中添加逻辑来查看这个属性,以确定是否运行createPage()
。"最初的回答"
production
&& - RedOster