Может ли Webpack 4 Treeshake создать неиспользуемый экспорт, созданный функцией? - PullRequest
0 голосов
/ 01 февраля 2019

Пожалуйста, сообщите, если я ошибаюсь, но я обнаружил, что webpack 4.29 не может связать деревья неиспользуемой функцией экспорта, если она была создана другой функцией.

Например, допустим, у меня есть следующий файл с именем test.mjs :

export const mirror = function mirror(str)
{
    return str;
};

let createCounterFunction = function createCounterFunction()
{
    let i = 0;
    let counter = function counter()
    {
        i += 1;
        return i;
    };
    return counter;
};
export const funcCount = createCounterFunction();

Теперь, допустим, я пытаюсь only импортировать "mirror" в мой файл index.js:

import { mirror } from './test.mjs';

Weppack 4 не может выполнить согласование любого из вышеприведенного кода, несмотря на то, что мы не собираемся импортировать какой-либо код, связанный со счетчиком.

Я пришел к выводу, что каждый раз, когда вы вызываете функцию внутриВ самом модуле эта функция считается «использованной», потому что вы использовали ее еще до экспорта.Тем не менее, кажется вполне вероятным, что достаточно умный компоновщик мог бы все еще потрясти этим.

Мой обходной путь - поместить подобные функции в их собственный файл кода, чтобы они импортировались только тогда, когда они действительно импортированы явно.

...