Я создаю библиотечный файл, который экспортирует много связанных функций. Я хотел бы иметь некоторое название, родственное этому:
libname
subcategory1
subcategory2
такой, что при использовании к нему можно получить доступ вот так
import { libname } from 'libname';
.
.
.
// somewhere in library-user code
libname.subcategory1.someFunc();
По сути, я хотел бы иметь вложенные области именования (что я бы назвал пространством имен). Насколько я знаю, это невозможно с базовым синтаксисом export <value>
и export <function>
, но это можно сделать, если я экспортирую объект const, например:
export const libname = {
subcategory1: {
someFunc,
},
subcategory2: {
// etc.
}
};
К сожалению, это делает его таким образом, что неиспользуемые функции не удаляются при встряхивании дерева, по крайней мере при использовании rollup
. Весь объект присутствует всегда, независимо от моего использования объекта. Есть ли другой способ вложения имен, который не наносит серьезного вреда дрожанию дерева?