Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions course/.vitepress/config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@ export default defineConfig({
},
},
vite: {
// 该插件以未编译的 .vue 形式发布,SSR 构建需交给 Vite 处理
ssr: {
noExternal: [
"@nolebase/vitepress-plugin-enhanced-readabilities",
"@nolebase/ui",
],
},
plugins: [
llmMarkdownPlugin({
srcDir: path.resolve(
Expand Down
13 changes: 13 additions & 0 deletions course/.vitepress/theme/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ import DefaultTheme from "vitepress/theme";
import giscus from "./giscus.js";
import version from "./version.js";
import copyToLLM from "./copyToLLM.js";
import {
NolebaseEnhancedReadabilitiesMenu,
NolebaseEnhancedReadabilitiesScreenMenu,
InjectionKey as ReadabilitiesInjectionKey,
} from "@nolebase/vitepress-plugin-enhanced-readabilities/client";
import "@nolebase/vitepress-plugin-enhanced-readabilities/client/style.css";
import "./style/print.css";
import "./style/copyToLLM.css";

Expand All @@ -14,6 +20,10 @@ export default {
extends: DefaultTheme,
enhanceApp(ctx: any) {
DefaultTheme.enhanceApp(ctx);
// 仅启用 Layout Switch(关闭 Spotlight);中文文案由站点 lang: zh-CN 自动匹配
ctx.app.provide(ReadabilitiesInjectionKey, {
spotlight: { disabled: true },
});
if (typeof window != "undefined") {
// 保证在打印时所有的 details 都是展开的
window.addEventListener("beforeprint", function () {
Expand All @@ -34,6 +44,9 @@ export default {
return h(DefaultTheme.Layout, null, {
"doc-after": () => h(giscus),
"doc-before": () => [h(version), h(copyToLLM)],
"nav-bar-content-after": () => h(NolebaseEnhancedReadabilitiesMenu),
"nav-screen-content-after": () =>
h(NolebaseEnhancedReadabilitiesScreenMenu),
});
},
} satisfies Theme;
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@
"epub": "bun run course/.vitepress/epub/build.ts"
},
"devDependencies": {
"@nolebase/vitepress-plugin-enhanced-readabilities": "^2.18.2",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Since @nolebase/vitepress-plugin-enhanced-readabilities and @nolebase/ui use Less for styling and are configured under ssr.noExternal (meaning Vite compiles their Vue components and styles on the fly), Vite requires the less preprocessor to be available in the host project. Relying on transitive dependencies for Vite preprocessors can lead to build failures in environments with strict package managers (like pnpm) or certain CI/CD pipelines. It is highly recommended to explicitly add less to your devDependencies.

Suggested change
"@nolebase/vitepress-plugin-enhanced-readabilities": "^2.18.2",
"@nolebase/vitepress-plugin-enhanced-readabilities": "^2.18.2",
"less": "^4.6.7",

"@resvg/resvg-js": "^2.6.2",
"@types/markdown-it": "^14.1.2",
"@types/node": "^26.0.0",
"jspdf": "^4.2.1",
"jszip": "^3.10.1",
"less": "^4.4.0",
"markdown-it": "^14.2.0",
"marked": "^18.0.5",
"prettier": "^3.8.4",
Expand Down
Loading