Я использую веб-пакет с babel и списком браузеров, но он не поддерживает все браузеры, перечисленные в списке браузеров. Я протестировал его в IE11, и, например, функция append , похоже, не имеет полифилла. У меня есть определение списка браузеров в пакете. json, которое было проблемой в @ babel-preset-env до 6.0.0, но должно быть исправлено.)
Вот содержимое моего .babelr c:
{
"presets": [
"@babel/typescript",
[
"minify",
{
"evaluate": true,
"mangle": true,
"builtIns": false
}
],
[
"@babel/preset-env",
{
"useBuiltIns": "usage",
"corejs": "3.0.0"
}
]
],
"plugins": [
"lodash",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-proposal-class-properties",
"@babel/proposal-object-rest-spread"
]
}
Это часть пакета. json, где я определяю список браузеров (не очень):
"browserslist": [
"defaults"
],
А вот мой сокращенный конфиг Webpack :
...
module.exports = {
devtool: 'source-map',
...
optimization: {
splitChunks: {
chunks: 'all',
name: false
}
},
plugins: [
new CleanWebpackPlugin(),
...
new DuplicatePackageCheckerPlugin()
],
resolve: {
alias: {
'~': Path.resolve(__dirname, '../src')
},
extensions: ['.ts', '.js', '.scss']
},
module: {
rules: [
{
test: /\.ts?$/,
include: Path.resolve(__dirname, '../src'),
use: 'babel-loader'
},
{
test: /\.mjs$/,
include: /node_modules/,
type: 'javascript/auto'
},
{
test: /\.(ico|jpg|jpeg|png|gif|webp)(\?.*)?$/,
use: {
loader: 'file-loader',
options: {
name: '[path][name].[ext]'
}
}
},
{
test: /\.(woff2?|ttf|eot|svg)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 10000,
name: 'fonts/[name].[ext]'
}
}
]
},
{
test: /\.js$/,
include: Path.resolve(__dirname, '../src'),
enforce: 'pre',
loader: 'eslint-loader',
options: {
emitWarning: true
}
},
{
test: /\.js$/,
use: ["source-map-loader"],
enforce: "pre"
},
{
test: /\.s?css$/i,
use: ['style-loader', 'css-loader?sourceMap=true', 'resolve-url-loader', 'sass-loader']
}
]
}
};
Я также использую машинопись, с этим tsconfig. json:
{
"compilerOptions": {
"module": "es6",
"target": "esnext",
"outDir": "./dist/",
"moduleResolution": "node",
"strict": true,
"locale": "de",
"allowSyntheticDefaultImports": true,
"isolatedModules": true,
"resolveJsonModule": true,
"sourceMap": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"types": [
"babylonjs",
"node"
]
},
"exclude": [
"node_modules"
]
}