Может ли Webpack 4 Treeshake создать неиспользуемый экспорт, созданный функцией?

Пожалуйста, сообщите, если я ошибаюсь, но я обнаружил, что 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();

Теперь предположим, что я пытаюсь импортировать только "зеркало" в мой файл index.js:

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

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

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

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

0 ответов

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