Rollup + HoCs Treehaking - PullRequest
       25

Rollup + HoCs Treehaking

2 голосов
/ 23 октября 2019

Я пытаюсь создать библиотеку компонентов, используя typescript и rollup.

У меня есть компонент, Canary.

function Canary() {
    ...
}

export default React.memo(Canary)

Обратите внимание, как Canary обернут в HoC (React.memo).

У меня есть другой компонент, SomeComponent

function SomeComponent() {
    ...
}

export default SomeComponent

Если бы я собирал свою библиотеку с помощью только SomeComponent экспорта,

src/index.ts

export { default as SomeComponent } from './SomeComponent'

Библиотека является древовиднойshakeable. Однако, если я добавлю компонент, который обернут в HoC, смена дерева завершится неудачей. Независимо от того, как я импортирую SomeComponent из моей библиотеки, Canary извлекается вместе с ним и попадает в пакет.

Я использую вариант this , чтобы определить,что-то такое, что может измениться или нет, изменено для накопительного пакета.

Я нашел это , в котором говорится о том, как вы можете подсказывать такие инструменты, как веб-пакет. Я настроил тестовый проект, используя NextJS (веб-пакет, используемый внутри), и добавил sideEffects: false к package.json моей библиотеки безрезультатно - Однако , я не думаю, что это мой код это разрушает тряску деревьев, я думаю, что это React.memo HoC. Он должен быть помечен pure в дистрибутиве.

, т.е. вручную редактировать строку вывода

var index = React.memo(Canary);

export { index as Canary }

в

var index = /*#__PURE__*/memo(Canary);

и повторный запуск тестов на установление связи с деревьями.

Вопрос Как правильно сообщить Rollup, что вы хотите отметить что-то чистое? Я даже иду на это в правильном направлении?

...