Rspress 2.0 објавен: нова надградба насочена кон искуството и AI
Rspress 2.0 објавен: нова надградба насочена кон искуството и AI
Со задоволство објавуваме официјално лансирање на Rspress 2.0!
Rspress е статички генератор на веб-страници базиран на Rsbuild, создаден како алатка за документација наменета за развивачи. Откако беше официјално објавен во 2023 година, Rspress 1.x има вкупно 144 верзии и 125 придонесувачи учествуваа во развојот на проектот. Сè поголем број на развивачи избираат Rspress, користејќи ја неговата висока компилациска ефикасност, конвенционално управување со рути и преглед на библиотека на компоненти за изградба на убави и доверливи веб-страници за документација.
На основа на повратни информации и предлози од заедницата, Rspress 2.0 оди напред во аспектите на естетика на темата, AI-native, искуство во развој на документација, користење со Rslib и други.
Зошто Rspress 2.0
Rspress 1.x веќе ги реши проблемите со компилациската ефикасност на рамката за веб-страници за документација, но сè уште постојат некои проблеми кои влијаат на основното искуство како алатка за развој на документација. Верзијата 2.0 не само што се фокусира на подобрување на компилациската ефикасност, туку и на другите аспекти на искуството со веб-страниците за документација:
- Стил на темата: нова поубава подразбирачка тема и нуди различни начини за прилагодување на темата, решавајќи го проблемот со недостиг на стабилен API за прилагодување на темата во 1.x.
- AI-native: Документацијата не само што служи за човечки читатели, туку треба да биде подобро разбрана и користена од агенти. Rspress сега вклучува вградена функција за генерирање на llms.txt и SSG-MD од SSG, генерирајќи висококвалитетна Markdown содржина за читање од агенти.
- Компилација по потреба, моментално стартување: подразбирачки активирано lazyCompilation, во комбинација со функцијата за пред-учитање на ресурси при ховерирање на линкови, гради потребни датотеки само кога се посетуваат специфични рути, овозможувајќи моментално стартување на dev, без оглед на големината на проектот.
- Shiki синтаксно истакнување: подразбирачки интегрирано Shiki, завршува синтаксно истакнување за време на компилација, поддржува префрлување на теми, проширувања на трансформатори, како @rspress/plugin-twoslash, носејќи побогат приказ на блокови со код.
- Искуство во развој на документација: оптимизира HMR за nav.json, meta.json и други датотеки и додава json шема за кодни предлози во IDE; подразбирачки активира функцијата за проверка на мртви линкови; додава синтакса за блокови со код, поддржувајќи референци на надворешни датотеки; @rspress/plugin-preview и @rspress/plugin-playground поддржуваат истовремена употреба и др.
- Интеграција со Rslib: Сега можете да изберете Rspress како алатка за документација при создавање на проекти за библиотека на компоненти со create-rslib, брзо создавајќи веб-страници за документација на компоненти.
2.0 нови карактеристики
Нова тема
2.0 подразбирачката тема доби систематска надградба, дизајнирана од тимскиот дизајнер @Zovn Wei, со значителни подобрувања во визуелниот ефект и искуството на читање, а секоја компонента може да се заменува независно, со висока прилагодливост.
Прилагодување на темата
Според степенот на прилагодување од низок до висок, постојат четири начина за прилагодување на темата: CSS променливи, BEM класни имиња, ESM повторно извлекување и ејектирање на компоненти.- CSS променливи: Новата тема открива повеќе CSS променливи, кои ги покриваат стиловите на темната боја, код блоковите, почетната страница и др. Можете интерактивно да прегледате и прилагодите сите CSS променливи на страницата за CSS променливи, а потоа да ги копирате во вашиот проект откако ќе најдете задоволителна конфигурација.
- BEM имена на класи: Вградениот компоненти сега користат BEM именување. Ова е многу Old School избор, но исто така е наш внимателно размислен одлука. Корисниците можат прецизно да ги прилагодат стиловите преку CSS селектори, а HTML структурата е појасна.
- ESM повторно извлекување: Ако измените на CSS не можат да ги задоволат потребите за прилагодување, можете да направите подлабоко прилагодување преку JS. Во theme/index.tsx користејќи ESM повторно извлекување, можете да ги замените било кој вграден компонент на Rspress.
- Компонента eject: Можете да користите новиот rspress eject [component] команда, оваа команда ќе ја копира изворната код на одредената компонента во директориумот theme/components/, можете слободно да ги измените овие кодови, дури и да ги предадете директно на AI за измена, за да постигнете длабоко прилагодување.
Навигациска лента, страна на бар tag
Rspress 2.0 имплементираше Tag компонент, сега можете да користите tag атрибутот во frontmatter, за UI означување во страна на бар или навигациска лента.
Вградена поддршка за повеќе јазици
Во верзијата 1.x, Rspress имаше само вградени англиски текстови, ако користите друг јазик како zh, мора да конфигурирате сите текстови, што е малку комплицирано. Сега 2.0 темата вградени текстови за превод на zh, en, ja, ko, ru и многу други јазици, системот автоматски ќе изврши "Tree Shaking" според конфигурацијата на јазикот, само пакувајќи ги текстовите и јазиците што ги користите.
llms.txt поддршка
Rspress сега интегрира способноста за генерирање на llms.txt во core, и реализираше нова SSG-MD (Static Site Generation to Markdown, статичка генерација на сајт до Markdown) способност.
Во фронтенд рамките базирани на React, често постои проблем со тешкото извлекување на статични информации, Rspress се соочува со истите предизвици. Rspress им овозможува на корисниците да ја подобрат изразноста на документите преку MDX фрагменти, React компоненти, Hooks и TSX рутирање и други динамични карактеристики. Но, овие динамични содржини ќе се соочат со следниве проблеми при конвертирање во Markdown текст:
- Директно давање на MDX на AI ќе вклучува многу кодни синтаксни шумови и ќе ги изгуби содржините на React компонентите
- Претворањето на HTML во Markdown често не дава добри резултати, квалитетот на информациите е тешко да се гарантира
За да го реши овој проблем, Rspress 2.0 воведува SSG-MD функција. Ова е нова функција, слична на статичка генерација на сајт (SSG), но разликата е што таа го рендерира вашиот страница како Markdown датотека, а не HTML датотека, и генерира llms.txt и llms-full.txt поврзани датотеки.

Shiki компилација на код блокови со истакнувањеRspress 2.0 подразбира користење на Shiki за истакнување на кодот. Во споредба со 1.x решението за истакнување на кодот во време на извршување, Shiki завршува со обработка на истакнувањето во време на компилација.
- Поддржува различни теми, на пример, на страницата со CSS променливи можете интерактивно да прелистувате и прегледувате различни Shiki теми.
- Исто така, Shiki дозволува користење на прилагодливи трансформатори за проширување на пишувањето, како што е twoslash и други.
- Внесувањето на програмски јазици е по потреба, без да се зголемува времето на извршување и големината на пакетот.
- Основано на синтаксата на TextMate, обезбедува точно истакнување на синтаксата во согласност со VS Code.
### Подобрување на перформансите на изградба
Rspress 2.0 е поддржан од Rsbuild и Rspack 2.0 верзијата за преглед, и истовремено подразбира вклучување на компилација по потреба и перзистентна кеширање.
#### Компилација по потреба
Стандардно е вклучена dev.lazyCompilation, само кога ќе пристапите до некоја страница, таа страница ќе биде компилирана, значително го зголемува брзината на стартување на развојот, дури и овозможува стартување во милисекунди. Rspress исто така реализира стратегија за пред-учитање на рутите, кога глувчето е над врската, целната рутна страница ќе се пред-учита, во комбинација со lazyCompilation за да се постигне безгубно искуство при развојот.

#### Перзистентна кеширање
2.0 исто така подразбира вклучување на перзистентна кеширање, повторно користејќи ги резултатите од последната компилација во топлото стартување, зголемувајќи ја брзината на изградба за 30%-60%. Ова значи дека по првото извршување на rspress dev или rspress build, следните стартувања ќе бидат значително побрзи.
### Искусство при развој на документација
#### Стандардно вклучена проверка на мртви линкови
Rspress 2.0 стандардно вклучува функција за проверка на мртви линкови. За време на изградбата, автоматски ќе се проверат невалидните линкови во документот, помагајќи ви да ги откриете и поправите навреме.

#### Кодни блокови на датотеки
Можете да користите file="./path/to/file" атрибут за да реферирате надворешни датотеки како содржина на коден блок, одржувајќи пример код во посебни датотеки.
#### Повеќе флексибилна употреба на meta во preview
@rspress/plugin-preview сега користи meta атрибут, што е пофлексибилно и може да се комбинира со кодни блокови на датотеки.

### Rslib & Rspress
### Повеќе официјални Rspress додатоци
Rspress 2.0 додаде неколку официјални додатоци:
- @rspress/plugin-algolia: поддржува замена на вграденото пребарување на Rspress со Algolia DocSearch
- @rspress/plugin-twoslash: додава типски наводи за TypeScript кодни блокови
- @rspress/plugin-llms: обезбедува способност за генерирање на llms.txt за проекти кои не поддржуваат SSG и SSG-MD
- @rspress/plugin-sitemap: автоматски генерира Sitemap датотеки за оптимизација на SEO
## Промени кои не се компатибилни
### Миграција од Rspress 1.x
Ако сте корисник на проект 1.x, подготвивме детална документација за миграција, која ќе ви помогне да надградите од 1.x на 2.0. Можете директно да ја користите функцијата "Копирај Markdown" во страницата, за да ја внесете во вашиот често користен коден агент (како Claude Code и други) за да ја завршите миграцијата.### Node.js и барања за верзија на зависности
Rspress 2.0 бара Node.js верзија 20+, React верзија 18+.
Следен чекор
Издавањето на Rspress 2.0 е само нов почеток. По ова издавање, Rspress ќе продолжи да се развива:
- Напредување на еколошката интеграција: Подлабока интеграција со Rslib, Rstest, нудејќи интегрирано искуство на развој за фронтенд проекти и проекти на библиотека на компоненти.
- Истражување на подлабока интеграција на AI и документација: Како што се интелигентно прашање и одговор, автоматски резимеа итн.; подобрување на SSG-MD за да биде стабилен и полесен за користење.
npm create rspress@latest

