Я обнаружил, что по какой-то причине веб-пакет предпочитает module
вместо main
на package.json
.
У нас есть много библиотек, которые экспортируют модуль в ES6 и основной конвейер, но в итоге мы получили вещи, которые не переносятся. Взяв пару известных модулей React, таких как React Bootstrap или React Toolbox
Я вижу, что я здесь не против конгресса, но я удивлен, что не многие сталкиваются с этим. React должен запускаться как в браузере, так и на узле, если SSR установлен, поэтому я не уверен, что делать дальше.
Пример библиотеки здесь:
https://github.com/firstandthird/domodule/blob/master/package.json#L6
Как включение node_modules на загрузчике babel, так и выполнение переключения, указанного в приведенном выше решении, похоже, идут вразрез со всеми остальными вещами, что, опять же, меня удивляет.
Единственное частичное решение, которое я нашел, - не исключать node_modules
на babel-loader
, но похоже, что это может откусить мне назад.
Вот соответствующая часть конфигурации Webpack.
module.exports = config => ({
test: /\.m?js$/,
use: {
loader: 'babel-loader',
options: {
babelrc: false,
configFile: false,
presets: [
[
'@babel/preset-env',
{
targets: config.browserlist,
useBuiltIns: false,
modules: false,
exclude: ['transform-typeof-symbol']
}
]
],
cacheDirectory: true,
cacheCompression: config.minify,
compact: config.minify
}
}
});
Вопрос в том, как правильно настроить Webpack или мои библиотеки. Я не против поменять все библиотеки, если это известный стандарт или что-то, чего мы могли бы здесь упустить.