node.js - 如何单独加载 ES6 模块(根据需要)又名。摇树?

标签 node.js webpack create-react-app es6-modules

现在我正在检查我的应用程序,更改此模式的实例:

import {Grid, Row, Col} from 'react-bootstrap'

进入:

import {Grid, Row, Col} from '../react-bootstrap'

其中 react-bootstrap.js 是我项目根目录下的一个简单文件,它有选择地从 NPM 包中导入我需要的 ES6 模块:

import Grid  from 'react-bootstrap/es/Grid'
import Col   from 'react-bootstrap/es/Col'
import Row   from 'react-bootstrap/es/Row'

export {Grid, Col, Row}

对许多包执行此操作后,我能够将包文件大小减少 50% 以上。

是否有可以为任何包自动执行此操作的 WebPack 模块或插件?

如果将此转换(即仅在包中包含显式导入的内容,而不是整个库)递归应用于整个包树,我敢打赌我们会看到巨大的大小差异。


编辑:正如 Swivel 指出的那样,这被称为 Tree Shaking并且应该由 Webpack 3+ 使用 UglifyJSPlugin 自动执行,它包含在 production configuration from react-scripts 中我正在使用的。

我不确定这是否是这两个项目中的一个错误,但我通过手动进行选择性导入看到了巨大的 yield ,如果正在执行 Tree Shaking 则不会出现这种情况。

最佳答案

我曾经搜索过这个并找到了this文章。这非常有帮助。我希望它对你有用。

关于node.js - 如何单独加载 ES6 模块(根据需要)又名。摇树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47759232/

相关文章:

javascript - 如何使用 Node.js 动态生成 Html 内容?

javascript - 如何在 Windows 环境中用 Node.js 编写第一个应用程序?

node.js - 如何使用 MongoDB Node 驱动程序通过 id 查找?

node.js - React.js 与 Express : Render a simple component on the client-side while using Express as a server?

reactjs - 2022 年如何在 CRA TypeScript 中创建路径别名?

reactjs - WebStorm 上的 %PUBLIC_URL% 编辑器警告

android - 无法在 npm 命令行中使用箭头键

makefile - 如何防止 Webpack 从 Makefile 配方中多次运行

vue.js - 如何修复 Vue 3 中的 "Error: Unknown option: devServer"

node.js - React 路由器、nginx、 Node 、静态文件