webpack:在 public 文件夹中编译 web worker
webpack: transpile web workers in public folder
我的项目是下一个 js,它使用 webpack 5 来编译 typescript 代码
我的 public 文件夹中有几个 Web Worker 脚本,路径为“/workers/**/*.worker.js”
我想知道我是否也可以用打字稿写它们
或者至少使用 babel 将它们转译为 es5(对于旧浏览器)
我知道“public”文件夹下的任何内容都按原样和文件(如 CDN)提供
我可以在我的项目中添加一个“workers”文件夹,并使用 webpack 和下一个 js 将它们加载到 public 路径中吗?
感谢@nalin-ranjan 我想出了解决方案
在我的“next.config.js”中,我在我的 webpack 配置中添加了一条规则:
module.exports = {
webpack: (config) => {
config.module.rules.push({
test: /\.worker\.ts$/,
type: 'asset/resource',
generator: {
filename: 'static/[hash:5].[name].js',
},
use: [
{
loader: 'ts-loader',
options: {
transpileOnly: true,
configFile: __dirname + '/worker.tsconfig.json',
},
},
],
})
return config
},
}
有了这条规则,我可以要求我的工作人员并将它们用作 URL 并转换打字稿
此外,我还必须添加一个禁用了“isolatedModules”选项的新“tsconfig”(因为网络工作者不是模块)。为此,我创建了一个与 next.js 相同的 tsconfig 文件,但禁用了 isolatedModules。原因是 next.js 禁止您禁用 isolatedModules 并将其重置
我的项目是下一个 js,它使用 webpack 5 来编译 typescript 代码
我的 public 文件夹中有几个 Web Worker 脚本,路径为“/workers/**/*.worker.js”
我想知道我是否也可以用打字稿写它们 或者至少使用 babel 将它们转译为 es5(对于旧浏览器)
我知道“public”文件夹下的任何内容都按原样和文件(如 CDN)提供
我可以在我的项目中添加一个“workers”文件夹,并使用 webpack 和下一个 js 将它们加载到 public 路径中吗?
感谢@nalin-ranjan 我想出了解决方案
在我的“next.config.js”中,我在我的 webpack 配置中添加了一条规则:
module.exports = {
webpack: (config) => {
config.module.rules.push({
test: /\.worker\.ts$/,
type: 'asset/resource',
generator: {
filename: 'static/[hash:5].[name].js',
},
use: [
{
loader: 'ts-loader',
options: {
transpileOnly: true,
configFile: __dirname + '/worker.tsconfig.json',
},
},
],
})
return config
},
}
有了这条规则,我可以要求我的工作人员并将它们用作 URL 并转换打字稿
此外,我还必须添加一个禁用了“isolatedModules”选项的新“tsconfig”(因为网络工作者不是模块)。为此,我创建了一个与 next.js 相同的 tsconfig 文件,但禁用了 isolatedModules。原因是 next.js 禁止您禁用 isolatedModules 并将其重置