3

使用 Terser 缩小时,有没有办法防止源文件名传播到 webpack 输出?

例子

.js我缩小的生产 React 应用程序生成的输出文件中,我仍然在输出中看到未损坏的源文件名。

示例摘录:

[...]
({"../js/dashboard/lib/MyApiClient.js":function(e,t,n){"use
strict";n.r(t),n.d(t,"default",function(){return c});var
o=n("../node_modules/axios/index.js"),r=n.n(o),
s=n("../node_modules/@sentry/browser/esm/index.js");
[...]

你可以在这里看到一些东西:

  • 我的专有代码有某种模块,称为MyApiClient.js
  • 我们正在使用axiosSentry

Webpack 配置

这是我们生产 webpack 配置的相关部分:

  optimization: {
    minimize: true,
    minimizer: [
      new TerserPlugin({
        sourceMap: true,
        extractComments: false,
        terserOptions: {
          output: {
            comments: false,
          },
        },
      }),
    ],
  },

问题

我担心这是泄漏有关我们应用程序内部结构的信息,而且我还没有在堆栈中找到正确的位置(webpack 选项?更简洁的选项?)来防止它。

尽管上面的示例是良性的,当然,再多的修改也不会使代码无法对功能进行逆向工程,但我不想让其他人容易理解应用程序的构建方式以及它可能隐藏的功能.

谢谢!

4

2 回答 2

4

这与 webpack 的optimization.namedModules选项有关,默认情况下应该为false,也许它在您的配置中启用。

// webpack.config.js
module.exports = {
  //...
  optimization: {
    namedModules: false
  }
};
于 2020-04-09T21:03:16.333 回答
0

还要考虑打开sourceMap: false生产,因为这是将代码映射到文件名的功能。

于 2020-04-08T17:50:57.867 回答