Skip to content

02_给 VitePress 添加 algolia 搜索

VitePress 搭建静态网站并在 GitHub/Gitee Pages 部署:https://agangdundan.cn/origin/

前期准备

1、algolia 账号创建和应用

1.在 algolia 官网 首页,点击蓝色按钮 "SIGN UP"

1.jpg

2.使用邮箱注册一个账号,或者直接选择以 GitHub 身份登录。

2.jpg

3.登录之后,会进入控制面板页面,点击右上角头像,会有一个 Settings 选项

3.jpg

4.点击 Applications 应用实例选项

4.png

5.新建应用实例

5.png

6.创建应用步骤

6.png

7.选择地区和创建

7.jpg

8.全部打钩后创建应用

8.jpg

至此应用创建成功

2、应用配置

在 VitePress 里面配置 algolia 搜索框,创建一个 docs/.vitepress/algolia.js 文件

js
// algolia.js:展示 algolia 搜索框
export default {
	appId: "", //
	apiKey: "", // Search-Only API Key
	indexName: "", // algolia创建的实例应用名称:FrontEndLearnNotes
	placeholder: "请输入关键词", //
	buttonText: "搜索", //
	searchParameters: {
		//
		faeFilters: ["tags:guide,api"],
	},
};

在`docs/.vitepress/config.js`` 中导入引用 algolia 的模块

js
import socialLinks from "./socialLinks";
import nav from "./nav";
import algolia from "./algolia";
import sidebar from "./sidebar";

export default {
	lang: "zh", // 中文,英文设置en
	title: "牡涯前端学习笔记", // 浏览器标签标题
	description: "记录前端学习过的笔记",
	base: "/FrontEndLearnNotes/", // url默认前缀
	appearance: true, // 暗黑模式
	ignoreDeadLinks: true, // 不会因死链接而使构建失败
	lastUpdated: true, // 使用 git 提交获取时间戳,使默认主题能够显示页面的上次更新时间
	// markdown主题
	markdown: {
		// 主题选择:https://github.com/shikijs/shiki/blob/main/docs/themes.md#all-themes
		// 主题预览:https://vscodethemes.com/
		// 添加自定义的主题(加载主题):https://github.com/shikijs/shiki/blob/main/docs/themes.md#loading-theme
		theme: "one-dark-pro",
		lineNumbers: true, // 显示代码行数
	},
	// outDir: "../dist", // 打包输出的目录
	// titleTemplate: '牧涯前端学习笔记', // 标题后缀
	cleanUrls: "without-subfolders", // url设置
	// 浏览器标签图标设置
	head: [
		[
			"link",
			{
				rel: "icon",
				href: "https://avatars.githubusercontent.com/u/48587992?v=4",
			},
		],
		// ['link', { rel: 'icon', type: 'image/svg+xml', href: '/logo.svg' }],
	],

	// ***** 主题设置 *****
	themeConfig: {
		logo: "/img/buding.svg",
		siteTitle: "牧涯前端学习笔记", // 网站左上角标题
		outlineTitle: "⚡️内容大纲",

		// 右上角导航
		nav,
		// 右上角导航中显示带有图标的社交帐户链接
		socialLinks,
		// 展示 algolia 搜索框
		algolia,
		// *****左边侧栏导航*****
		sidebar,

		// 编辑
		editLink: {
			pattern:
				"https://github.com/muyaCode/FrontEndLearnNotes/edit/main/docs/:path",
			text: "在 GitHub 上编辑此页",
		},
		lastUpdateText: "上次更新时间:",
		// 卡片广告
		carbonAds: {
			code: "卡片广告 code",
			placement: "卡片广告布置",
		},
		docFooter: {
			prev: "上一篇",
			next: "下一篇",
		},
		// 首页页脚配置。您可以添加消息和版权。仅当页面由于设计原因不包含边栏时,才会显示页脚。
		footer: {
			message: "Released under the MIT License.",
			copyright: "Copyright © 2022-MuYa",
		},
	},
};

上面 algolia.js 的配置 Key 获取

1.重新进入 Settings 应用设置页面,点击对应的应用,进入到应用配置页面,点击 API Keys 获取 key

2-1.jpg

会看到如下界面,Search-Only API Key  可公开的 key,是在 VitePress 项目中会使用的 Key;而  Admin API Key  是用于后端爬虫需要用到的的 key,因为是私有的,所以一会放在 Github Secrets 中

2-2.png

2.复制公开的 key:Search-Only API Key 到 vitepress 项目的docs/.vitepress/algolia.js

appId 字段填入:Application ID

apiKey 字段填入:Search-Only API Key

indexName 字段是:algolia 刚刚创建的实例应用名称

js
// 展示 algolia 搜索框
export default {
	appId: "1L6FRXPKEM", // Application ID
	apiKey: "934b4c2e67a08d72d379c9af236c5859", // Search-Only API Key
	indexName: "FrontEndLearnNotes", // algolia创建的实例应用名称:FrontEndLearnNotes
	placeholder: "请输入关键词",
	buttonText: "搜索",
	searchParameters: {
		faeFilters: ["tags:guide,api"],
	},
};

3.执行 ci 配置,打开 VitePress 项目的 github 地址,点击 Setting 选项,点击 Secrets 中的 Actions

2-3.jpg

3.1 创建  API_KEY 字段,将 algolia 应用的Admin API Key 复制到API_KEY

3.2 创建  APPLICATION_ID 字段,将 algolia 应用的  Application ID  复制到  APPLICATION_ID

2-4.jpg

4.在 VitePress 项目中,创建 crawlerConfig.json 文件

在项目的根目录下创建  crawlerConfig.json  文件,内容如下,注意前两个字段需要进行替换。这是告诉  algolia  需要爬取的配置

json
{
	"index_name": "FrontEndLearnNotes",
	"start_urls": ["https://muyacode.github.io/FrontEndLearnNotes/"],
	"rateLimit": 8,
	"maxDepth": 10,
	"selectors": {
		"lvl0": {
			"selector": "",
			"defaultValue": "Documentation"
		},
		"lvl1": ".content h1",
		"lvl2": ".content h2",
		"lvl3": ".content h3",
		"lvl4": ".content h4",
		"lvl5": ".content h5",
		"content": ".content p, .content li"
	},
	"selectors_exclude": [
		"aside",
		".page-footer",
		".next-and-prev-link",
		".table-of-contents"
	],
	"js_render": true
}

5.编写 CI 脚本

在项目根目录.github/workflows  文件夹下,创建  algolia.yml  文件(名称可更改,自定义),粘贴如下内容:

json
name: algolia
on:
  push:
    branches:
      - main
jobs:
  algolia:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Get the content of algolia.json as config
        id: algolia_config
        run: echo "config=$(cat crawlerConfig.json | jq -r tostring)" >> $GITHUB_OUTPUT
      - name: Push indices to Algolia
        uses: signcl/docsearch-scraper-action@master
        env:
          APPLICATION_ID: ${{ secrets.APPLICATION_ID }}
          API_KEY: ${{ secrets.API_KEY }}
          CONFIG: ${{ steps.algolia_config.outputs.config }}

这里 yml 就是使用 Github Actions 在 Docker 中执行的 AlgoliaDocSearch scraper action,当我们推送到 main 分支时就会立即执行这个任务,当然如果你是 master 分支只需要修改 branches 那里的值即可

项目提交 algolia 搜索配置后的应用结构爬虫数据

1.回到项目提交代码到 GitHub,然后打开 GitHub 项目链接,点击 Actions ,选择刚刚提交的记录带有 algolia 的

3-1.jpg

2.点击 algolia,发现正在执行爬虫工作

3-2.jpg

3.回到 algolia 的 Applications 应用列表

3-3.jpg

4.点击后发现,应用已经在爬取数据

3-4.png

总结

Released under the MIT License.