javascript - 如何使用带有 commonjs 插件的汇总部分包含 Node.js 模块
问题描述
我正在尝试使用汇总提供的开箱即用的摇树功能将bitcore-librollup-plugin-commonjs
部分包含到我的网页中并加载 Node.js 模块。
为了更好地说明问题,我在 github 上制作了一个演示项目
你可以看看bundle.js
。如果我按以下方式定义模块:
const useful = "3";
const useless = "4";
export {usefull, useless}
摇树正常工作 - 最终捆绑包仅包含有用的依赖项。
node-lib.js
但是,如果我在演示项目中以它在 bitcore-lib ( ) 中定义的方式定义模块:
module.exports = {
useful: "1",
useless: "2"
};
在这种情况下,最终捆绑包包括整个模块。
我预计useless: 2
不应该因为摇树而包含依赖项。我的 index.js 在这里:
import {usefull as usefull1} from "./my-node-lib"
import {usefull as usefull2} from "./my-es-lib"
console.log(`hi! ${usefull1} ${usefull2}`);
我rollup.config.js
的在这里可用
是模块定义问题还是汇总配置问题?
解决方案
Tree Shaking 仅适用于 ES6 模块。至少对于 Webpack 是这样,我想对于 rollup 也是如此。你的第一个定义是 ES6,第二个是 commonjs。
因此,如果一个库没有被编译/转译为 ES6 模块,那么摇晃树将不起作用。另一个不起作用的功能是模块连接。
根据库,您可以尝试重新编译它。
推荐阅读
- angular - 我正在开发一个 Angular 项目,我的一个服务文件在 VS 代码中突然变灰
- macos - 是否可以使用haskell在macos上捕获全局键盘事件?
- python - 如何使用 PYTHON 中的 POST 表单数据遍历包含图像的文件夹并上传图像
- javascript - 我无法在 React-Native 中的不同导航器之间导航
- powershell - ADSI 脚本无法从所有组中提取用户的问题
- javascript - 单击键盘箭头后重置 setinterval
- java - 如何填写PDF文本框注释
- c# - 在 VBA 中使用 C# DLL
- typescript - 打字稿的全局模块定义
- node.js - 我需要在我的所有网页上运行 node.js