Как частично включить модуль Node.js, используя накопительный пакет с плагином commonjs

Я пытаюсь частично включить bitcore-lib в мою веб-страницу, используя встряхивание дерева, которое накопительный пакет предоставляет из коробки и rollup-plugin-commonjs загрузить модуль Node.js.

Чтобы лучше проиллюстрировать проблему, я делаю демонстрационный проект, который доступен на GitHub

Вы можете взглянуть на bundle.js, Если я определю модуль следующим образом:

const useful = "3";
const useless = "4";

export {usefull, useless}

Встряхивание дерева работает правильно - окончательный комплект включает только полезные зависимости.

Но если я определю модуль так, как он определен в bitcore-lib (node-lib.js) в демо-проекте:

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 доступен здесь

Это проблема определения модуля или конфигурации накопительного пакета?

1 ответ

Встряхивание дерева работает только для модулей ES6. По крайней мере, это верно для Webpack, и я полагаю, также для накопительного пакета. Ваше первое определение - ES6, второе - commonjs.

Поэтому, если библиотека не скомпилирована / перенесена в модули ES6, встряхивание дерева не будет работать. Еще одна особенность, которая не будет работать, - это объединение модулей.

В зависимости от библиотеки вы можете попробовать перекомпилировать ее.

Другие вопросы по тегам