指南Univer Sheets开始使用高级安装

高级安装

使用包管理器

如果你对现代前端开发有所了解,那么使用包管理工具来构建包含 Univer 的应用将会是一个不错的选择。

我们推荐使用 ViteesbuildWebpack 5 等对 ES Module 支持较好的构建工具来构建 Univer 应用。如果你使用了其它构建工具(例如 Webpack 4),可能会需要一些额外的配置,请阅读 常见问题 获取更多信息。

安装

Univer 以插件的形式提供了一系列功能,除了一些产品所必需的核心插件外,你还可以根据需要选择性地引入其它插件。

💡
  • 如果你正在使用 npm,请确保使用的版本为 npm@7 及以上。这是因为 npm@3 ~ npm@6 并不会正确地安装 peerDependencies1
  • 如果你正在使用 pnpm,请确保使用的版本为 pnpm@8 及以上。如果你正在使用 pnpm@6 ~ pnpm@7,可以尝试配置 auto-install-peers=true 2来解决依赖安装问题。
  • 如果你正在使用 yarn,你需要手动安装缺失的 peerDependencies3,不过别担心,下面的安装命令中已经包含了这些依赖。

以下示例将会带你了解哪些插件是必需的,以及如何安装它们:

npm install @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/engine-formula @univerjs/engine-render @univerjs/sheets @univerjs/sheets-formula @univerjs/sheets-formula-ui @univerjs/sheets-ui @univerjs/ui
💡

样式文件的引入顺序很重要,确保你在依次引入 @univerjs/design@univerjs/ui 的 CSS 样式后再引入其他插件的样式文件。

你需要在项目中引入 Univer 的样式文件、语言包,以及一些必要的插件:

import "@univerjs/design/lib/index.css";
import "@univerjs/ui/lib/index.css";
import "@univerjs/docs-ui/lib/index.css";
import "@univerjs/sheets-ui/lib/index.css";
import "@univerjs/sheets-formula-ui/lib/index.css";
 
import { LocaleType, Tools, Univer, UniverInstanceType } from "@univerjs/core";
import { defaultTheme } from "@univerjs/design";
 
import { UniverFormulaEnginePlugin } from "@univerjs/engine-formula";
import { UniverRenderEnginePlugin } from "@univerjs/engine-render";
 
import { UniverUIPlugin } from "@univerjs/ui";
 
import { UniverDocsPlugin } from "@univerjs/docs";
import { UniverDocsUIPlugin } from "@univerjs/docs-ui";
 
import { UniverSheetsPlugin } from "@univerjs/sheets";
import { UniverSheetsFormulaPlugin } from "@univerjs/sheets-formula";
import { UniverSheetsFormulaUIPlugin } from "@univerjs/sheets-formula-ui";
import { UniverSheetsUIPlugin } from "@univerjs/sheets-ui";
 
import DesignZhCN from '@univerjs/design/locale/zh-CN';
import UIZhCN from '@univerjs/ui/locale/zh-CN';
import DocsUIZhCN from '@univerjs/docs-ui/locale/zh-CN';
import SheetsZhCN from '@univerjs/sheets/locale/zh-CN';
import SheetsUIZhCN from '@univerjs/sheets-ui/locale/zh-CN';
import SheetsFormulaUIZhCN from '@univerjs/sheets-formula-ui/locale/zh-CN';
ℹ️

大量插件的语言包和样式加载可能会使开发变得繁琐且难以维护。我们提供了 Univer Plugins 来帮助你更加方便地引入插件,详情请参考 打包器插件 章节。

然后创建一个 Univer 实例,并注册这些插件:

const univer = new Univer({
  theme: defaultTheme,
  locale: LocaleType.ZH_CN,
  locales: {
    [LocaleType.ZH_CN]: Tools.deepMerge(
      SheetsZhCN,
      DocsUIZhCN,
      SheetsUIZhCN,
      SheetsFormulaUIZhCN,
      UIZhCN,
      DesignZhCN,
    ),
  },
});
 
univer.registerPlugin(UniverRenderEnginePlugin);
univer.registerPlugin(UniverFormulaEnginePlugin);
 
univer.registerPlugin(UniverUIPlugin, {
  container: 'app',
});
 
univer.registerPlugin(UniverDocsPlugin);
univer.registerPlugin(UniverDocsUIPlugin);
 
univer.registerPlugin(UniverSheetsPlugin);
univer.registerPlugin(UniverSheetsUIPlugin);
univer.registerPlugin(UniverSheetsFormulaPlugin);
univer.registerPlugin(UniverSheetsFormulaUIPlugin);
 
univer.createUnit(UniverInstanceType.UNIVER_SHEET, {});

更新

由于 Univer 使用了 monorepo 的方式进行管理,每次发布都会更新所有官方插件的版本号。因此在更新 Univer 时,你应当同时更新所有的插件,保证它们的版本号一致。

如果你使用的是 pnpm,你可以使用以下命令来更新所有的插件:

pnpm update "@univerjs/*" "@univerjs-pro/*" @latest

懒加载部分插件

使用高级安装方式的一个优势是你可以更加灵活地控制插件的加载时机,一种常见的方式是在应用初始化时仅加载必须的插件,而将部分插件的加载时机延迟到首次渲染完成之后。

Univer 的 官方 demo 就使用了这样的优化技巧,可参考。

使用 Univer Plugins

通过 CDN 引入

🚫

从 0.5.0 版本开始,我们将不再提供高级安装方式的 UMD 版本,请使用 Presets 安装方式的 UMD 版本,或者使用包管理工具安装。


Footnotes

  1. https://blog.npmjs.org/post/110924823920/npm-weekly-5

  2. https://pnpm.io/npmrc#auto-install-peers

  3. https://github.com/yarnpkg/yarn/issues/1503