diff --git a/docs/ru/guide/routing.md b/docs/ru/guide/routing.md index 36664de6..79fb1d9e 100644 --- a/docs/ru/guide/routing.md +++ b/docs/ru/guide/routing.md @@ -161,19 +161,21 @@ src/getting-started.md --> /getting-started.html ├─ packages │ ├─ pkg-a │ │ └─ src -│ │ ├─ pkg-a-code.ts -│ │ └─ pkg-a-docs.md +│ │ ├─ foo.md +│ │ └─ index.md │ └─ pkg-b │ └─ src -│ ├─ pkg-b-code.ts -│ └─ pkg-b-docs.md +│ ├─ bar.md +│ └─ index.md ``` И вы хотите, чтобы страницы VitePress генерировались следующим образом: ``` -packages/pkg-a/src/pkg-a-docs.md --> /pkg-a/index.html -packages/pkg-b/src/pkg-b-docs.md --> /pkg-b/index.html +packages/pkg-a/src/index.md --> /pkg-a/index.html +packages/pkg-a/src/foo.md --> /pkg-a/foo.html +packages/pkg-b/src/index.md --> /pkg-b/index.html +packages/pkg-b/src/bar.md --> /pkg-b/bar.html ``` Этого можно добиться, настроив опцию [`rewrites`](../reference/site-config#rewrites) следующим образом: @@ -182,8 +184,10 @@ packages/pkg-b/src/pkg-b-docs.md --> /pkg-b/index.html // .vitepress/config.js export default { rewrites: { - 'packages/pkg-a/src/pkg-a-docs.md': 'pkg-a/index.md', - 'packages/pkg-b/src/pkg-b-docs.md': 'pkg-b/index.md' + 'packages/pkg-a/src/index.md': 'pkg-a/index.md', + 'packages/pkg-a/src/foo.md': 'pkg-a/foo.md', + 'packages/pkg-b/src/index.md': 'pkg-b/index.md', + 'packages/pkg-b/src/bar.md': 'pkg-b/bar.md' } } ``` @@ -193,13 +197,25 @@ export default { ```ts export default { rewrites: { - 'packages/:pkg/src/(.*)': ':pkg/index.md' + 'packages/:pkg/src/:slug*': ':pkg/:slug*' } } ``` Пути перезаписи компилируются с помощью пакета `path-to-regexp` — обратитесь к [его документации](https://github.com/pillarjs/path-to-regexp#parameters) за более сложным синтаксисом. +Пути перезаписи компилируются с помощью пакета `path-to-regexp` — обратитесь к [его документации](https://github.com/pillarjs/path-to-regexp/tree/6.x#parameters) за более сложным синтаксисом. + +`rewrites` также может быть функцией, которая получает исходный путь и возвращает новый: + +```ts +export default { + rewrites(id) { + return id.replace(/^packages\/([^/]+)\/src\//, '$1/') + } +} +``` + ::: warning Относительные ссылки с переписыванием Когда переписывание включено, **относительные ссылки должны быть основаны на переписанных путях**. Например, чтобы создать относительную ссылку с `packages/pkg-a/src/pkg-a-code.md` на `packages/pkg-b/src/pkg-b-code.md`, нужно использовать: