Могу ли я принудительно импортировать зависимость как чистую?

#javascript #webpack #tree-shaking

#javascript #webpack #встряхивание дерева

Вопрос:

Например, я использую mustache в своей библиотеке, но он используется только в экспортируемой функции

 import mustache from 'mustache'

export function some() {
  ...
  mustache
  ...
}

export function other() {
  ...
}
  

Когда я импортирую только other из этой библиотеки и создаю пакет с использованием webpack, webpack включает mustache в себя код, потому что он считает, что код mustache не является чистым.

Могу ли я как-то пометить mustache импорт как чистый?

Ответ №1:

Я думаю, что Webpack всегда mustache будет связываться при его импорте.

Возможно, вы можете разделить свою библиотеку на несколько файлов:

some.js

 import mustache from 'mustache'

export default function some() {
  ...
  mustache
  ...
}
  

и other.js

 export default function other() {
  ...
}
  

и создайте основной index.js файл, который является экспортом по умолчанию и сочетает в себе вышеуказанное:

 import some from './some';
import other from './other';

export default {
  some,
  other,
};
  

Таким образом, ваша библиотека может использоваться целиком (через index.js ) или по частям — some.js или other.js (которые не будут включены mustache в нее).

 // you can use the whole library as
import library from 'library';

// or you can use any part, for example 'other' (without mustache)
import other from 'library/other';