繁体   English   中英

导入 esm/dist 模块的正确方法是什么? (反应/JavaScript)

[英]What is the correct way to import esm/dist modules? (React/javascript)

所以我们在我们的代码库中使用 geist 组件库。 它几乎集成到我们应用程序的某些部分,并且由于这个库是 250kb,它影响了我们的页面速度。 为了避免导入整个模块,通常的解决方案是只导入你需要的东西,理想情况下,没有什么会破坏,一切都应该按预期工作。

import { CssBaseline } from "@npkn/geist-react"

执行上述操作应该可行,但会向捆绑包添加 250kb。

导入组件的另一种方法是导入特定文件。 我有两个选项可以从 ESM 或 dist 模块导入组件

import CssBaseline from "@npkn/geist-react/dist/css-baseline"

import CssBaseline from "@npkn/geist-react/esm/css-baseline/index"

我已经尝试执行这两项操作,但 webpack 会抛出错误。 我也尝试过导入命名导出,但即使那样它也会抛出错误。

TypeError: _npkn_geist_react_dist_css_baseline__WEBPACK_IMPORTED_MODULE_0___default(...).flush is not a function
   9 |   static async getInitialProps(ctx) {
  10 |     const initialProps = await Document.getInitialProps(ctx)
> 11 |     const styles = CssBaseline.flush()
     |                   ^
  12 | 
  13 |     return {
  14 |       ...initialProps,

我的问题是我是在做正确的进口还是我遗漏了什么?

谢谢!

如果其他人遇到这个问题,请查看包大小示例https://geist-ui.dev/en-us/guide/bundle-size 这个例子不太管用,但我发现这个工作在https://spectrum.chat/geist-ui/react/minimize-build~d30af727-2b97-4d16-9357-9b4e5104fdc9

而不是做

import Button from '@geist-ui/react/esm/button'

import Button from '../../../../node_modules/@geist-ui/react/esm/button';

显着减少了我们的包大小!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM