Skip to content

Commit

Permalink
release: v2.8.5, merge pull request #390 from vitejs/dev
Browse files Browse the repository at this point in the history
  • Loading branch information
ShenQingchuan authored Mar 1, 2022
2 parents 71593a0 + e783d46 commit f549301
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 9 deletions.
2 changes: 1 addition & 1 deletion config/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -918,7 +918,7 @@ export default defineConfig({

- **类型:** `string | string[]`

默认情况下,Vite 会抓取你的 index.html 来检测需要预构建的依赖项。如果指定了 `build.rollupOptions.input`Vite 将转而去抓取这些入口点。
默认情况下,Vite 会抓取你的 `index.html` 来检测需要预构建的依赖项。如果指定了 `build.rollupOptions.input`Vite 将转而去抓取这些入口点。

如果这两者都不合你意,则可以使用此选项指定自定义条目——该值需要遵循 [fast-glob 模式](https://github.com/mrmlnc/fast-glob#basic-syntax) ,或者是相对于 Vite 项目根的模式数组。这将覆盖掉默认条目推断。

Expand Down
2 changes: 1 addition & 1 deletion guide/api-javascript.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ interface ViteDevServer {
*/
ssrLoadModule(
url: string,
options?: { isolated?: boolean }
options?: { fixStacktrace?: boolean }
): Promise<Record<string, any>>
/**
* 解决 ssr 错误堆栈信息
Expand Down
32 changes: 25 additions & 7 deletions guide/dep-pre-bundling.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
当你首次启动 `vite` 时,你可能会注意到打印出了以下信息:

```
Optimizable dependencies detected: (侦测到可优化的依赖:)
react, react-dom
Pre-bundling them to speed up dev server page load...(将预构建它们以提升开发服务器页面加载速度)
(this will be run only when your dependencies have changed)(这将只会在你的依赖发生变化时执行
Pre-bundling dependencies: (正在预构建依赖:)
react,
react-dom
(this will be run only when your dependencies or config have changed)(这将只会在你的依赖或配置发生变化时执行
```

## 原因 {#the-why}
Expand All @@ -28,6 +28,8 @@ Pre-bundling them to speed up dev server page load...(将预构建它们以提

通过预构建 `lodash-es` 成为一个模块,我们就只需要一个 HTTP 请求了!

请注意,这只会应用在开发模式下。

## 自动依赖搜寻 {#automatic-dependency-discovery}

如果没有找到相应的缓存,Vite 将抓取你的源码,并自动寻找引入的依赖项(即 "bare import",表示期望从 `node_modules` 解析),并将这些依赖项作为预构建包的入口点。预构建通过 `esbuild` 执行,所以它通常非常快。
Expand All @@ -38,9 +40,25 @@ Pre-bundling them to speed up dev server page load...(将预构建它们以提

在一个 monorepo 启动中,该仓库中的某个依赖可能会成为另一个包的依赖。Vite 会自动侦测没有从 `node_modules` 解析的依赖项,并将链接的依赖视为源码。它不会尝试打包被链接的依赖,而是会分析被链接依赖的依赖列表。

::: warning Note
由于依赖关系的处理方式不同,链接的依赖关系在最终构建时可能无法正常工作。
使用 `npm package` 代替所有本地依赖,以避免最终的 bundle 问题。
然而,这需要被链接的依赖被导出为 ESM 格式。如果不是,那么你可以在配置里将此依赖添加到 [`optimizeDeps.include`](/config/#optimizedeps-include) 和 [`build.commonjsOptions.include`](/config/#build-commonjsoptions) 这两项中。

```js
export default defineConfig({
optimizeDeps: {
include: ['linked-dep']
},
build: {
commonjsOptions: {
include: [/linked-dep/, /node_modules/]
}
}
})
```

当这个被链接的依赖发生变更后,在重启开发服务器时在命令中带上 `--force` 选项让所有更改生效。

::: warning 重复删除
由于对链接依赖的解析方式不同,传递性的依赖项可能会不正确地进行重复数据删除,而造成运行时的问题。如果你偶然发现了这个问题,请使用 `npm pack` 来修复它。
:::

## 自定义行为 {#customizing-the-behavior}
Expand Down
16 changes: 16 additions & 0 deletions guide/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,22 @@ const modules = {
}
```

`import.meta.glob``import.meta.globEager` 都支持以字符串形式导入文件,类似于 [已字符串形式导入资源](https://vitejs.dev/guide/assets.html#importing-asset-as-string)。在这里,我们使用了 [Import Assertions](https://github.com/tc39/proposal-import-assertions#synopsis) 语法对导入进行断言。

```js
const modules = import.meta.glob('./dir/*.js', { assert: { type: 'raw' } })
```

上面的代码会被转换为下面这样:

```js
// code produced by vite(代码由 vite 输出)
const modules = {
'./dir/foo.js': '{\n "msg": "foo"\n}\n',
'./dir/bar.js': '{\n "msg": "bar"\n}\n'
}
```

请注意:

- 这只是一个 Vite 独有的功能而不是一个 Web 或 ES 标准
Expand Down

0 comments on commit f549301

Please sign in to comment.