Как частично включить модуль 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, встряхивание дерева не будет работать. Еще одна особенность, которая не будет работать, - это объединение модулей.
В зависимости от библиотеки вы можете попробовать перекомпилировать ее.