为 IE11 使用 Babel 的 Svelte
Svelte with Babel for IE11
我将 svelte 与 Rollup 结合使用。而且我需要支持IE11
我当前在 rollup.config.js 中的 babel 配置是:
babel({
extensions: [ '.js', '.mjs', '.html', '.svelte' ],
exclude: 'node_modules/**',
presets: [
[
'@babel/env',
{
modules: 'false',
targets: {
browsers: '> 1%, IE 11, not op_mini all, not dead',
node: 8
},
useBuiltIns: 'usage'
}
]
]
}),
请帮助我进行配置,现在我的应用程序在 IE 和其他(Chrome,Mozilla)上都崩溃了。
可以参考in Sapper使用的Babel插件的配置:
babel({
extensions: ['.js', '.mjs', '.html', '.svelte'],
runtimeHelpers: true,
exclude: ['node_modules/@babel/**'], // <= /!\ NOT 'node_mobules/**'
presets: [
['@babel/preset-env', {
// adapter to ensure IE 11 support
targets: '> 0.25%, not dead, IE 11'
}]
],
plugins: [
'@babel/plugin-syntax-dynamic-import',
['@babel/plugin-transform-runtime', {
useESModules: true
}]
]
}),
需要注意的重要一点是,您不能将整个 node_modules
排除在 Babel 处理之外。原因是 Svelte 的代码本身(即 node_modules/svelte
下)需要转译以支持 IE 11。同样,如果您使用第三方 Svelte 组件,它们可能会存在于 node_modules
之下,但需要转译。
另一个需要知道的棘手问题是转译代码不能与非转译代码兼容。特别是,ES6+ 类(用于 Svelte 组件)与其 ES5 转译版本不兼容("can't extend from non class, yada yada...")。因此,您必须确保所有 Svelte 代码都使用相同的规则进行转译,或者根本不进行转译...
这里的 another example 在原始 Svelte(即非 Sapper)项目中使用(几乎)相同的配置。
两个 link 都指向模板项目,因此您可以轻松地克隆并 运行 它们来亲自尝试。 (如果你想使用第二个例子,请注意我的 link 没有指向 master 分支,所以你必须检查正确的分支来尝试 babel 配置。)
我将 svelte 与 Rollup 结合使用。而且我需要支持IE11
我当前在 rollup.config.js 中的 babel 配置是:
babel({
extensions: [ '.js', '.mjs', '.html', '.svelte' ],
exclude: 'node_modules/**',
presets: [
[
'@babel/env',
{
modules: 'false',
targets: {
browsers: '> 1%, IE 11, not op_mini all, not dead',
node: 8
},
useBuiltIns: 'usage'
}
]
]
}),
请帮助我进行配置,现在我的应用程序在 IE 和其他(Chrome,Mozilla)上都崩溃了。
可以参考in Sapper使用的Babel插件的配置:
babel({
extensions: ['.js', '.mjs', '.html', '.svelte'],
runtimeHelpers: true,
exclude: ['node_modules/@babel/**'], // <= /!\ NOT 'node_mobules/**'
presets: [
['@babel/preset-env', {
// adapter to ensure IE 11 support
targets: '> 0.25%, not dead, IE 11'
}]
],
plugins: [
'@babel/plugin-syntax-dynamic-import',
['@babel/plugin-transform-runtime', {
useESModules: true
}]
]
}),
需要注意的重要一点是,您不能将整个 node_modules
排除在 Babel 处理之外。原因是 Svelte 的代码本身(即 node_modules/svelte
下)需要转译以支持 IE 11。同样,如果您使用第三方 Svelte 组件,它们可能会存在于 node_modules
之下,但需要转译。
另一个需要知道的棘手问题是转译代码不能与非转译代码兼容。特别是,ES6+ 类(用于 Svelte 组件)与其 ES5 转译版本不兼容("can't extend from non class, yada yada...")。因此,您必须确保所有 Svelte 代码都使用相同的规则进行转译,或者根本不进行转译...
这里的 another example 在原始 Svelte(即非 Sapper)项目中使用(几乎)相同的配置。
两个 link 都指向模板项目,因此您可以轻松地克隆并 运行 它们来亲自尝试。 (如果你想使用第二个例子,请注意我的 link 没有指向 master 分支,所以你必须检查正确的分支来尝试 babel 配置。)