Как частично включить модуль 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 доступен здесь

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


person Artem    schedule 17.11.2018    source источник


Ответы (1)


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

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

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

person norekhov    schedule 18.11.2018
comment
Кажется, встряхивание дерева должно работать, но это зависит от самого модуля CommonJS - см. github.com/rollup/rollup-plugin-commonjs/issues/362 - person Artem; 13.12.2018