如何获取由 Webpack 重命名的文件名?

How to get a filename renamed by Webpack?

我在我的项目中使用了由 Emscripten 编译的 webassembly 文件。 而且由于我的项目使用了Webpack,它重命名了所有文件,然后Emscripten模块找不到更多的webassembly文件。

然后我需要获取 webassembly 文件的新文件名才能加载它。

我找到了 this workaround,但我想要一个更好的解决方案,因为我不想用 .wasm 文件的配置更改 webpack.config.js

解释上下文:我有一个名为 bursh 的项目,它使用 Webpack 并导入一个名为 scissors 的模块,其中包含 webassembly 文件。所以我正在寻找一种不需要更新配置的解决方案,因为责任的隔离 - 由于某些原因 scissors[= 在 brush 设置配置没有意义 scissors

根据您的描述,您可能需要查看 copy-webpack-plugin。 Webpack 通常会将多个文件打包成一个或几个更大的文件,但如果你还想将文件复制到你的构建中,这个插件可以做到这一点。

我解决了这个问题。我的解决方案是在 scissors 添加 Webpack 以便在此项目中设置配置。

const path = require('path')

const rules = [
  {
    loader: 'file-loader',
    test: /huffman\.wasm$/,
    type: 'javascript/auto',
  },
]

rules.concat()

module.exports = {
  devtool: 'source-map',
  entry: './src/index.js',
  module: {
    rules,
  },
  node: {
    fs: 'empty',
  },
  output: {
    filename: 'scissors.js',
    libraryTarget: 'commonjs2',
    path: path.join(__dirname, './dist'),
    sourceMapFilename: 'scissors.js.map',
  },
}

我不知道这是否是最好的解决方案,因为现在我在 brush 项目和 scissors 项目中都有一个 Webpack,那么它会增加我的代码的复杂性.. .但是这样我可以保持责任的隔离