首页 > 解决方案 > 如何使用带有 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在这里可用

是模块定义问题还是汇总配置问题?

标签: javascriptnode.jscommonjsrollupbitcore

解决方案


Tree Shaking 仅适用于 ES6 模块。至少对于 Webpack 是这样,我想对于 rollup 也是如此。你的第一个定义是 ES6,第二个是 commonjs。

因此,如果一个库没有被编译/转译为 ES6 模块,那么摇晃树将不起作用。另一个不起作用的功能是模块连接。

根据库,您可以尝试重新编译它。


推荐阅读