Skip to content

Commit 09d7f57

Browse files
authored
Merge pull request #1211 from vitejs/sync-a2858051-1
docs(en): merge docs-cn/sync-docs into docs-cn/dev @ a285805
2 parents 07a817f + eaa13f1 commit 09d7f57

File tree

5 files changed

+374
-15
lines changed

5 files changed

+374
-15
lines changed

.vitepress/config.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import {
55
groupIconMdPlugin,
66
groupIconVitePlugin,
77
} from 'vitepress-plugin-group-icons'
8+
import llmstxt from 'vitepress-plugin-llms'
9+
import type { PluginOption } from 'vite'
810
import { buildEnd } from './buildEnd.config'
911

1012
const ogDescription = 'Next Generation Frontend Tooling'
@@ -510,6 +512,26 @@ export default defineConfig({
510512
'.gitlab-ci.yml': 'vscode-icons:file-type-gitlab',
511513
},
512514
}),
515+
// @ts-ignore
516+
llmstxt({
517+
ignoreFiles: ['blog/*', 'blog.md', 'index.md', 'team.md'],
518+
description: 'The Build Tool for the Web',
519+
details: `\
520+
- 💡 Instant Server Start
521+
- ⚡️ Lightning Fast HMR
522+
- 🛠️ Rich Features
523+
- 📦 Optimized Build
524+
- 🔩 Universal Plugin Interface
525+
- 🔑 Fully Typed APIs
526+
527+
Vite is a new breed of frontend build tooling that significantly improves the frontend development experience. It consists of two major parts:
528+
529+
- A dev server that serves your source files over [native ES modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules), with [rich built-in features](https://vite.dev/guide/features.md) and astonishingly fast [Hot Module Replacement (HMR)](https://vite.dev/guide/features.md#hot-module-replacement).
530+
531+
- A [build command](https://vite.dev/guide/build.md) that bundles your code with [Rollup](https://rollupjs.org), pre-configured to output highly optimized static assets for production.
532+
533+
In addition, Vite is highly extensible via its [Plugin API](https://vite.dev/guide/api-plugin.md) and [JavaScript API](https://vite.dev/guide/api-javascript.md) with full typing support.`,
534+
}) as PluginOption,
513535
],
514536
optimizeDeps: {
515537
include: [

guide/rolldown.md

Lines changed: 61 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,16 @@ Rolldown 专注于三个主要原则:
1010

1111
- **速度**:利用 Rust 的高性能进行构建
1212
- **兼容性**:能够与现有的 Rollup 插件一起工作
13-
- **开发者体验**为 Rollup 用户提供熟悉的 API
13+
- **优化**拥有比 esbuild 和 Rollup 更先进的特性
1414

1515
## 为什么 Vite 要迁移到 Rolldown {#why-vite-is-migrating-to-rolldown}
1616

1717
1. **统一**:Vite 目前使用 esbuild 进行依赖预打包,使用 Rollup 进行生产构建。Rolldown 的目标是将这两个过程统一到一个高性能的打包工具中,以降低复杂性。
1818

1919
2. **性能**:Rolldown 的 Rust 实现在性能上比基于 JavaScript 的打包工具有显著的提升。虽然具体的基准测试可能会因项目大小和复杂性而有所不同,但早期测试表明,与 Rollup 相比,Rolldown 的速度有望得到提高。
2020

21+
1. **额外特性**:Rolldown 提供了 Rollup 或 esbuild 中没有的功能,例如高级的分块控制,内置的模块热替换(HMR),以及模块联邦(Module Federation)。
22+
2123
欲深入了解 Rolldown 的设计动机,请参阅[构建 Rolldown 的原因](https://rolldown.rs/guide/#why-rolldown)
2224

2325
## 尝试 `rolldown-vite` 的好处 {#benefits-of-trying-rolldown-vite}
@@ -74,11 +76,27 @@ Rolldown 专注于三个主要原则:
7476

7577
虽然 Rolldown 的目标是成为 Rollup 的替代品,但还有一些特性正在实现中,以及一些小的有意的行为差异。需要查看完整的列表,请参考 [这个 GitHub PR](https://github.com/vitejs/rolldown-vite/pull/84#issue-2903144667),它会定期更新。
7678

79+
### 验证选项错误 {#option-validation-errors}
80+
81+
当传入未知或无效选项时,Rolldown 会抛出错误。由于 Rolldown 不支持 Rollup 中的部分选项,根据您或所使用的元框架设置的选项,可能会遇到相关错误。下方展示了此类错误消息的示例:
82+
83+
> Error: Failed validate input options.
84+
>
85+
> - For the "preserveEntrySignatures". Invalid key: Expected never but received "preserveEntrySignatures".
86+
87+
如果你自己没有传递这个选项,这个问题必须由使用的框架来解决。你可以通过设置 `ROLLDOWN_OPTIONS_VALIDATION=loose` 环境变量来暂时忽略这个错误。
88+
89+
## 启用原生插件 {#enabling-native-plugins}
90+
91+
感谢 Rolldown 和 Oxc,各种内部的 Vite 插件,如别名或解析插件,已被转换为 Rust。在撰写本文时,这些插件默认并未启用,因为它们的行为可能与 JavaScript 版本不同。
92+
93+
要测试它们,你可以在你的 Vite 配置中将 `experimental.enableNativePlugin` 选项设置为 `true`
94+
7795
## 反馈问题 {#reporting-issues}
7896

7997
由于这是一个实验性的集成,你可能会遇到一些问题。如果你遇到问题,请在 [`vitejs/rolldown-vite`](https://github.com/vitejs/rolldown-vite) 仓库中反馈,**而不是主 Vite 仓库**
8098

81-
[上报问题](https://github.com/vitejs/rolldown-vite/issues/new) 时,请按照问题模板提供
99+
[上报问题](https://github.com/vitejs/rolldown-vite/issues/new) 时,请根据相应的问题模板进行操作,并提供模板中所需的信息,这通常包括
82100

83101
- 问题的最小复现
84102
- 你的环境详细信息(操作系统,Node 版本,包管理器)
@@ -92,9 +110,34 @@ Rolldown 专注于三个主要原则:
92110

93111
我们鼓励你尝试 `rolldown-vite` 并通过反馈和问题报告来参与其开发工作。
94112

113+
未来我们将为 Vite 引入全量打包模式(Full Bundle Mode),该模式将在生产环境 _和开发模式_ 下提供打包后的文件。
114+
115+
### 为何引入全量打包模式? {#why-introducing-full-bundle-mode}
116+
117+
Vite 以其非打包开发服务器方案著称,这正是其早期凭借速度优势迅速流行的关键原因。这种方案最初是尝试探索在不进行传统打包的情况下,开发服务器性能能达到何种极限。
118+
119+
但随着项目规模和复杂度的增长,两大挑战逐渐显现:
120+
121+
1. **开发/生产环境不一致性**:开发环境提供的非打包 JavaScript 与生产环境打包构建产物存在运行时行为差异,可能导致仅在生产环境暴露的问题,增加调试难度。
122+
123+
2. **开发阶段性能衰减**:非打包方案导致每个模块需单独请求,产生大量网络请求。虽然 _对生产环境无影响_,但会造成开发服务器启动和页面刷新时的显著开销。在大型应用中(需处理数百甚至数千独立请求)该问题尤为突出,若开发者使用网络代理,刷新延迟和开发体验下降将更加严重。
124+
125+
通过 Rolldown 的整合,我们有机会在保持 Vite 标志性性能的同时统一开发与生产体验。全量打包模式将实现:
126+
127+
- 大型应用仍保持快速启动
128+
- 开发与生产环境行为一致性
129+
- 降低页面刷新的网络开销
130+
- 在 ESM 输出基础上维持高效 HMR
131+
132+
该模式初期将作为可选特性提供(类似 Rolldown 整合方案),我们计划在收集反馈并确保稳定性后将其设为默认模式。
133+
95134
## 插件/框架作者指南 {#plugin-framework-authors-guide}
96135

97-
### 主要变化列表 {#list-of-major-changes}
136+
::: tip
137+
这部分内容主要是针对插件和框架的开发者。如果你是一般用户,你可以忽略这部分内容。
138+
:::
139+
140+
### 主要变更概述 {#overview-of-major-changes}
98141

99142
- Rolldown 用于构建(之前使用 Rollup)
100143
- Rolldown 用于 optimizer(之前使用 esbuild)
@@ -104,11 +147,15 @@ Rolldown 专注于三个主要原则:
104147
- Oxc minifier 默认用于 JS 压缩(之前使用 esbuild)
105148
- Rolldown 用于打包配置(之前使用 esbuild)
106149

107-
### 检测 rolldown-vite {#detecting-rolldown-vite}
150+
### 检测 `rolldown-vite` {#detecting-rolldown-vite}
108151

109-
你可以通过以下方式检测:
152+
::: warning
153+
在大多数情况下,你不需要检测你的插件是运行在 `rolldown-vite` 还是 `vite` 上,你应该在两者之间寻求一致的行为,而不是采用条件分支。
154+
:::
155+
156+
如果你需要 `rolldown-vite` 有不同的行为,你有两种方法可以检测是否使用了 `rolldown-vite`
110157

111-
- 检查 `this.meta.rolldownVersion` 的存在
158+
检查 `this.meta.rolldownVersion` 的存在
112159

113160
```js
114161
const plugin = {
@@ -122,7 +169,9 @@ const plugin = {
122169
}
123170
```
124171

125-
- 检查 `rolldownVersion` export 的存在
172+
<br>
173+
174+
检查 `rolldownVersion` export 的存在:
126175

127176
```js
128177
import * as vite from 'vite'
@@ -138,15 +187,12 @@ if (vite.rolldownVersion) {
138187

139188
### 在 Rolldown 中忽略选项验证 {#ignoring-option-validation-in-rolldown}
140189

141-
Rolldown 在传递未知或无效选项时会抛出错误。由于 Rollup 中的某些选项在 Rolldown 中不受支持,你可能会遇到错误。以下是此类错误消息的示例:
142-
143-
> Error: Failed validate input options.
144-
>
145-
> - For the "preserveEntrySignatures". Invalid key: Expected never but received "preserveEntrySignatures".
190+
[前文所述](#option-validation-errors),当传入未知或无效选项时,Rolldown 会抛出错误。
146191

147-
这可以通过有条件地传递选项来修复,方法是检查是否正在使用上面所示的 `rolldown-vite` 运行
192+
可通过条件式传递选项(通过 [如上所示](#detecting-rolldown-vite) 检测是否使用 `rolldown-vite`)来修复此问题
148193

149-
如果你想暂时抑制此错误,可以设置 `ROLLDOWN_OPTIONS_VALIDATION=loose` 环境变量。但请记住,你最终需要停止传递 Rolldown 不支持的选项。
194+
在此场景中,设置环境变量 `ROLLDOWN_OPTIONS_VALIDATION=loose` 亦可抑制错误。
195+
但需注意,**最终仍需停止传递 Rolldown 不支持的选项**
150196

151197
### `transformWithEsbuild` 需要单独安装 `esbuild` {#transformwithesbuild-requires-installing-esbuild-separately}
152198

@@ -155,7 +201,7 @@ Rolldown 在传递未知或无效选项时会抛出错误。由于 Rollup 中的
155201
### `esbuild` 选项的兼容层 {#compatibility-layer-for-esbuild-options}
156202

157203
Rolldown-Vite 有一个兼容层,用于将 `esbuild` 的选项转换为相应的 Oxc 或 `rolldown` 选项。正如 [生态系统 CI](https://github.com/vitejs/vite-ecosystem-ci/blob/rolldown-vite/README-temp.md) 中测试的那样,这在许多情况,包括简单的 `esbuild` 插件下都有效。
158-
虽说如此,但**我们将在未来移除对 `esbuild` 选项的支持**,并鼓励你尝试使用相应的 Oxc 或 `rolldown` 选项。
204+
虽说如此,但 **我们将在未来移除对 `esbuild` 选项的支持**,并鼓励你尝试使用相应的 Oxc 或 `rolldown` 选项。
159205
你可以从 `configResolved` 钩子获取由兼容层设置的选项。
160206

161207
```js

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"feed": "^4.2.2",
1414
"vitepress": "^1.6.3",
1515
"vitepress-plugin-group-icons": "^1.3.7",
16+
"vitepress-plugin-llms": "^1.1.0",
1617
"vue": "^3.5.13",
1718
"@types/node": "^20.9.2",
1819
"@type-challenges/utils": "^0.1.1",

0 commit comments

Comments
 (0)