Workbox - 如何让 webpack 转译 service worker 文件?
Workbox - how to have the service worker file transpiled by webpack?
我目前正在使用 workbox-webpack-plugin
:
中的 GenerateSW 插件生成服务工作者文件
new GenerateSW({
cacheId: 'foo',
clientsClaim: true,
inlineWorkboxRuntime: true,
runtimeCaching: [
{
urlPattern: /^https:\/\/fonts\.googleapis\.com.*/,
handler: 'StaleWhileRevalidate',
},
],
skipWaiting: true,
sourcemap: false,
swDest: 'sw.js',
}),
生成的 sw.js
文件包含由注入其中的 GenerateSW
插件生成的代码。但是,这段代码没有转译,我需要转译,因为 Google 决定用什么 ecmascript 版本编写它与我无关。我可以在 webpack 具有 运行 之后使用 babel 转译 sw.js
文件,但我想知道是否有一种方法可以简单地自动转译该文件(最好使用相同的 env
信息webpack 本身使用)?
假设您使用的是 workbox-webpack-plugin
v5+,您可以 pass in babelPresetEnvTargets
配置生成的 service worker 的转译过程。
new GenerateSW({
// Use the Array<string> syntax from
// https://babeljs.io/docs/en/babel-preset-env#targets
babelPresetEnvTargets: ['chrome >= 80'],
// ...other options...
}),
我目前正在使用 workbox-webpack-plugin
:
new GenerateSW({
cacheId: 'foo',
clientsClaim: true,
inlineWorkboxRuntime: true,
runtimeCaching: [
{
urlPattern: /^https:\/\/fonts\.googleapis\.com.*/,
handler: 'StaleWhileRevalidate',
},
],
skipWaiting: true,
sourcemap: false,
swDest: 'sw.js',
}),
生成的 sw.js
文件包含由注入其中的 GenerateSW
插件生成的代码。但是,这段代码没有转译,我需要转译,因为 Google 决定用什么 ecmascript 版本编写它与我无关。我可以在 webpack 具有 运行 之后使用 babel 转译 sw.js
文件,但我想知道是否有一种方法可以简单地自动转译该文件(最好使用相同的 env
信息webpack 本身使用)?
假设您使用的是 workbox-webpack-plugin
v5+,您可以 pass in babelPresetEnvTargets
配置生成的 service worker 的转译过程。
new GenerateSW({
// Use the Array<string> syntax from
// https://babeljs.io/docs/en/babel-preset-env#targets
babelPresetEnvTargets: ['chrome >= 80'],
// ...other options...
}),