From 47f49c3cf218f4121b4902d0ed7aecb138acae38 Mon Sep 17 00:00:00 2001 From: mantou132 <709922234@qq.com> Date: Mon, 8 Jan 2024 16:11:28 +0800 Subject: [PATCH] [gem-book] Fixed self language detect without `i18n` --- packages/gem-book/docs/zh/002-guide/001-sort.md | 3 ++- packages/gem-book/docs/zh/002-guide/003-cli.md | 2 +- packages/gem-book/docs/zh/003-plugins.md | 2 +- packages/gem-book/gem-book.cli.json | 2 +- packages/gem-book/src/bin/index.ts | 7 ++++++- packages/gem-book/src/element/elements/main.ts | 4 ++-- packages/gem-book/src/element/elements/plugin.ts | 5 ++++- packages/gem-book/src/element/helper/i18n.ts | 2 ++ 8 files changed, 19 insertions(+), 8 deletions(-) diff --git a/packages/gem-book/docs/zh/002-guide/001-sort.md b/packages/gem-book/docs/zh/002-guide/001-sort.md index 40f46ac6..0f65f0df 100644 --- a/packages/gem-book/docs/zh/002-guide/001-sort.md +++ b/packages/gem-book/docs/zh/002-guide/001-sort.md @@ -25,6 +25,7 @@ src/docs/ ``` > [!TIP] -> 用文件名进行排序的好处是你能在 IDE 中预览排序后的结果,可以使用 [`--reverse`](./004-metadata.md#dir) 进行降序显示侧边栏 +> 用文件名进行排序的好处是你在 IDE 中看到的文档顺序基本就是网站侧边栏中的顺序,可以使用 [`reverse`](./004-metadata.md#dir) 进行降序显示侧边栏。 +> 另外,在文档中使用链接时允许不带这些权重数字,但这样会失去 IDE 支持,所以不建议这么做。 默认情况下,这个数字不会显示在 URL 中,如果你的文件名本来就有相同格式的前缀,可以使用 [`--display-rank`](./003-cli.md#--display-rank) 选项显示它们。 diff --git a/packages/gem-book/docs/zh/002-guide/003-cli.md b/packages/gem-book/docs/zh/002-guide/003-cli.md index 5fe3e139..3e33c4f8 100644 --- a/packages/gem-book/docs/zh/002-guide/003-cli.md +++ b/packages/gem-book/docs/zh/002-guide/003-cli.md @@ -97,7 +97,7 @@ npx gem-book docs \ #### `--json` -只输出 `` 使用的 json 渲染数据,默认为 `gem-book.json`。 +只输出 `` 使用的 `json` 渲染数据,默认输出 `gem-book.json`,使用 [`--output`](#-o,---output-path) 自定义。 #### `--config ` diff --git a/packages/gem-book/docs/zh/003-plugins.md b/packages/gem-book/docs/zh/003-plugins.md index d26c4ed2..4a192128 100644 --- a/packages/gem-book/docs/zh/003-plugins.md +++ b/packages/gem-book/docs/zh/003-plugins.md @@ -66,7 +66,7 @@ yarn add gem-book ## `` -动态加载显示 MarkDown 片段: +动态加载 Markdown 片段: diff --git a/packages/gem-book/gem-book.cli.json b/packages/gem-book/gem-book.cli.json index cf112783..ab6fcfd2 100644 --- a/packages/gem-book/gem-book.cli.json +++ b/packages/gem-book/gem-book.cli.json @@ -5,7 +5,7 @@ "i18n": true, "homeMode": true, "sourceBranch": "docs", - "plugin": ["raw", "docsearch", "api", "sandpack", "code-group", "import"], + "plugin": ["raw", "docsearch", "api", "sandpack", "code-group", "import", "include", "var", "example"], "template": "docs/template.html", "ga": "G-PZYZ441YD3", "debug": true, diff --git a/packages/gem-book/src/bin/index.ts b/packages/gem-book/src/bin/index.ts index a1d7a0a8..99bdc44f 100644 --- a/packages/gem-book/src/bin/index.ts +++ b/packages/gem-book/src/bin/index.ts @@ -414,6 +414,7 @@ program } const filePath = path.relative(dir, filePathWithDir); + const fullPath = path.join(docsRootDir, filePath); if (!isDirConfigFile(filePath) && !isMdFile(filePath)) { devServerEventTarget.dispatchEvent( @@ -428,7 +429,11 @@ program return updateBookConfig(); } - const { content, metadataChanged } = getMdFile(path.join(docsRootDir, filePath), bookConfig.displayRank); + if (cliConfig.debug) { + checkRelativeLink(fullPath, docsRootDir); + } + + const { content, metadataChanged } = getMdFile(fullPath, bookConfig.displayRank); devServerEventTarget.dispatchEvent( Object.assign(new Event(UPDATE_EVENT), { detail: { filePath, content }, diff --git a/packages/gem-book/src/element/elements/main.ts b/packages/gem-book/src/element/elements/main.ts index aadcaaa1..d297df76 100644 --- a/packages/gem-book/src/element/elements/main.ts +++ b/packages/gem-book/src/element/elements/main.ts @@ -27,7 +27,8 @@ const parser = new DOMParser(); // https://github.com/w3c/csswg-drafts/issues/9712 const style = createCSSSheet(css` :not(gbp-var):not(:defined) { - display: contents; + display: block; + margin-block: 2rem; color: transparent; /* maybe browser limit */ font-size: 0; @@ -40,7 +41,6 @@ const style = createCSSSheet(css` display: block; content: 'The element is not defined'; padding: 2rem; - margin-block: 2rem; text-align: center; color: ${theme.textColor}; background: ${theme.borderColor}; diff --git a/packages/gem-book/src/element/elements/plugin.ts b/packages/gem-book/src/element/elements/plugin.ts index 86428a10..194584e0 100644 --- a/packages/gem-book/src/element/elements/plugin.ts +++ b/packages/gem-book/src/element/elements/plugin.ts @@ -14,6 +14,7 @@ import { Main } from './main'; /** * 获取资源的远端 GitHub raw 地址,如果使用 `DEV_MODE`,则返回本机服务的 URL * + * - 优先使用 markdown 文件 * - 支持相对路径 * - `/docs/readme.md` 和 `docs/readme.md` 等效 */ @@ -29,7 +30,9 @@ function getRemoteURL(originSrc = '', dev = GemBookPluginElement.devMode) { let src = originSrc.startsWith('/') ? originSrc : `/${originSrc}`; if (originSrc.startsWith('.')) { const absPath = new URL(originSrc, `${location.origin}${originLink}`).pathname; - const link = links?.find(({ originLink }) => originLink === absPath); + const link = links?.find(({ originLink, link, userFullPath }) => + [originLink, link, userFullPath].some((path) => path === absPath || `${path}.md` === absPath), + ); if (link) return getURL(joinPath(lang, link.originLink), link.hash); src = new URL(originSrc, `${location.origin}${joinPath(sourceDir, lang, originLink)}`).pathname; } diff --git a/packages/gem-book/src/element/helper/i18n.ts b/packages/gem-book/src/element/helper/i18n.ts index 8d771e5d..8c406840 100644 --- a/packages/gem-book/src/element/helper/i18n.ts +++ b/packages/gem-book/src/element/helper/i18n.ts @@ -20,4 +20,6 @@ export const fallbackLanguage = document.documentElement.lang; export const selfI18n = new I18n({ fallbackLanguage: fallbackLanguage in resources ? fallbackLanguage : 'en', resources, + // 没有启动 i18n 时由 `html[lang]` 定义语言 + currentLanguage: fallbackLanguage, });