Gatsby 入门示例

简介: Gatsby 初始化项目

初始化项目


refs:



npx gatsby new gatsby-demo https://github.com/gatsbyjs/gatsby-starter-blog


Plugins


MDX


修改项目:


  • 添加对应的依赖项 yarn add gatsby-plugin-mdx @mdx-js/mdx @mdx-js/react
  • 修改配置
  • 删除没用的依赖项 yarn remove gatsby-plugin-image gatsby-transformer-remark gatsby-plugin-gatsby-cloud
  • 修改 GraphQL 查询语句及相关页面的模板
  • 测试运行,细节调整


refs:



Sitemap


修改项目:


  • 安装插件 yarn add gatsby-plugin-sitemap
  • 修改配置
  • 打包测试(运行 develop 不生成)


配置中需要指定 GraphQL 查询,以 MDX 为例:


const siteUrl = process.env.URL || `https://fallback.net`


module.exports = {

 siteMetadata: {

  // 注意 siteUrl 需要提前赋值变量

   siteUrl,

 },

 plugins: [

    //  其他插件

   {

     resolve: `gatsby-plugin-sitemap`,

     options: {

       query: `

       {

         allSitePage {

           nodes {

             path

           }

         }

         allMdx(sort: { fields: [frontmatter___date], order: DESC }) {

           nodes {

             fields {

               slug

             }

             frontmatter {

               date

             }

           }

         }

       }

     `,

       resolveSiteUrl: () => siteUrl,

       resolvePages: ({

         allSitePage: { nodes: allPages },

         allMdx: { nodes: allNodes },

       }) => {

         const allNodeMap = allNodes.reduce((acc, node) => {

           const { slug } = node.fields

           acc[slug] = {

             path: slug,

             modifiedGmt: node.frontmatter.date,

           }


           return acc

         }, {})

         return allPages.map(page => {

           return { ...page, ...allNodeMap[page.path] }

         })

       },

       serialize: ({ path, modifiedGmt = "" }) => {

         return {

           url: path,

           lastmod: modifiedGmt,

         }

       },

     },

   },

 ],

}


refs:



Dark Mode


修改项目:


  • 安装插件 yarn add gatsby-plugin-theme-switcher
  • 修改配置
  • 添加主题切换 component
  • 添加主题样式(通过 css vars 或者其他)
  • 运行并测试效果


refs:


相关文章
|
Java Spring
仿写@DS 多数据源动态切换
最近公司在做项目,用到了多数据源,我在网上找了好多的开源项目。
仿写@DS 多数据源动态切换
|
小程序 前端开发 JavaScript
微信小程序(二十一)小程序登录获取openid和unionid
在微信小程序中,因为各种各样的原因我们会需要获取到用户的openid或者unionid下面就简单来讲一下在小程序中如何获取openid和unionid。 步骤一:微信登录获取登录凭证
2990 0
|
JSON JavaScript Linux
【MCP教程系列】Node.js+TypeScript搭建NPX MCP服务并自定义部署至阿里云百炼
本文介绍如何将阿里云百炼的工作流封装成MCP服务并部署,随后引入到智能体中使用。主要步骤包括:1) 封装MCP服务;2) 发布到npm官方平台;3) 在阿里云百炼平台创建自定义MCP服务;4) 在智能体中添加自定义MCP服务。通过这些步骤,用户可以轻松将工作流转化为MCP服务,并在智能体中调用。
2846 0
|
7月前
|
测试技术 API 异构计算
飞桨x昇腾生态适配方案:05_算子适配流程
本内容主要介绍Paddle针对非CPU和Nvidia GPU硬件(如NPU)的适配流程与方法。适配代码存于PaddleCustomDevice仓库,路径为`PaddleCustomDevice/backends/npu`,包含kernels(算子适配)和tests(单元测试)两个核心目录。适配流程分为算子注册、适配函数入参与主体实现三步,重点对齐Paddle与CANN算子参数。
256 0
|
开发框架 移动开发 前端开发
基于HBuilderX+UniApp+ThorUI的手机端前端开发处理
基于HBuilderX+UniApp+ThorUI的手机端前端开发处理
|
前端开发
|
XML 存储 数据安全/隐私保护
PyMuPDF 1.24.4 中文文档(七)(5)
PyMuPDF 1.24.4 中文文档(七)
312 0
uniapp授权小程序隐私弹窗效果demo(整理)
uniapp授权小程序隐私弹窗效果demo(整理)
|
Shell 网络安全
mac启动时自动添加多个ssh私钥
mac启动时自动添加多个ssh私钥
|
机器学习/深度学习 人工智能 搜索推荐
智能代理:改变人机交互的方式
智能代理作为一种新的人机交互方式,正在改变着人们与计算机系统之间的互动方式。从个人助手、聊天机器人到游戏智能,智能代理在多个领域展示了其强大的应用潜力。然而,智能代理也面临着语义理解、个性化定制和隐私等挑战。随着人工智能技术的不断发展,智能代理有望成为未来人机交互的重要方式之一。
1001 1