Не удалось получить фиктивные метаданные с помощью 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 связаны, и должны ли они быть одинаковыми? И должны ли они быть обычными для нас, чтобы мы могли импортировать модуль и издеваться над ним, как я упоминал выше, или что мы можем сделать?