Не удалось получить фиктивные метаданные с помощью genMockFromModule, если модуль не собран как commonjs

Прежде всего я использую preset-typcript (TypeScript 3.1.3), Babel 7 и Webpack 4 и preset-env для переноса пакета.

При попытке позвонить genMockFromModule с моим пакетом из node_modules он работает, если я собираю его, используя Babel 6, но не в Babel 7.

В конце концов я обнаружил, что эта разница в Babel 7 значительно изменилась, и теперь @babel/preset-env по умолчанию будет иметь значение modules: false если не указано явно. В Вавилонской 6 будет по умолчанию modules: 'commonjs' если не указано явно - по крайней мере, это сделал для меня.

Итак, мой вопрос, теперь, когда я знаю, что вызывает эту проблему, заключается в следующем:

Почему люди предпочитают собирать пакеты npm с modules: false скорее, чем modules: commonjs? И если commonjs настолько плох, могу ли я собрать свой пакет с modules: false вместо этого, и все же как-то заставить его работать? Если да, то как?

Кроме того, при использовании preset-typcript, какой будет оптимальная настройка в tsconfig, относительно target, module, lib? В настоящее время они настроены на:

{
  target: "esnext",
  module: "commonjs",
  lib: ["esnext", "dom"]
  moduleResolution: "node"
}

Насколько я понимаю, preset-typcript будет использовать tsconfig и делать свое волшебство перед preset-реагировать и preset-env. Таким образом, мы можем использовать babel для перехода от esnext к тому, что понимают целевые браузеры. Но это module: commonjsв tsconfig.json и конфигурации preset-babel связаны, и должны ли они быть одинаковыми? И должны ли они быть обычными для нас, чтобы мы могли импортировать модуль и издеваться над ним, как я упоминал выше, или что мы можем сделать?

0 ответов

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