Мне бы хотелось получить советы о том, как создать удобную в использовании оптимизированную сборку с потрясающим деревом.Я использую накопительный пакет для упаковки библиотеки пользовательского интерфейса, состоящей из нескольких компонентов.
Моя архитектура:
/src
/index.js
/components
/index.js
/component1
/index.js
/Comp.vue
...
/componentN
/index.js
/Comp.vue
/directives
/index.js
/directive1
/index.js
...
/directiveN
/index.js
src/components/index.js
выглядит как
export { default as Comp1 } from './component1
...
export { default as CompN } from './componentN
src/directives/index.js
выглядит как
export { default as Directive1 } from './directive1
...
export { default as DirectiveN } from './directiveN
Каждый внутренний index.js
является просто привязкой для удобства, например
import Comp from './Comp.vue'
export default Comp`
Наконец, src/index.js
соберет все с:
import { * as components } from './components'
import { * as directives } from './directives'
export { components, directives }
При сборке конфигурация свертки выглядит следующим образом:
{
input: 'src/index.js',
output: {
file: 'dist/lib.esm.js',
format: 'esm',
}
(конечно, я избегаю всех прозрачных плагинов-уродов, я думаю, что они будут шуметь в этой проблеме)
Так что эта сборка выглядит хорошо и работает, но ...
- Очень неудобно использовать:
import { components } from 'lib'
const { Comp1 } = components
Эта конструкция, вероятно, также нарушает дрожание дерева при использовании, потому что мы импортируем полный объект
components
, когда требуется только
Comp1
.
Я понимаю, что мне не следует заботитьсяо встряхивании деревьев, а скорее о предоставлении библиотеки, способной к встряхиванию деревьев , и это то, о чем идет речь.При тестировании моей сборки с самым простым шаблоном @ vue / cli была импортирована полная библиотека, даже @ vue / cli заявляет о включенной в комплекте функции webpack-treeshaking.
Я не против сборкиотдельные файлы вместо одной большой сборки esm, но, насколько я помню, была возможна одна сборка файлов со встряхиванием дерева.Я боюсь создавать отдельные файлы, так как CompA
может потребоваться внутренне CompB
, и если пользователю также понадобится CompB
, в этом случае он может быть дублирован в сборке (например, одна версия для внешнего использования и однаверсия для внутреннего использования).
Я не знаю, как приступить к оптимизации.Любой указатель приветствуется.