如何在生产 webpack 构建中获取原始函数参数名称

How to get original function parameter names in production webpack build

我正在尝试实现类似于依赖注入的功能,通过从 javascript 模块公开的函数中获取参数名称,如下所示:

module.exports = (router,form,query,url) => {

    // Do something with these parameters ...

    return response;
};

我可以通过解析函数的字符串表示来解决这个问题。 There's already a SO thread for that.

当代码与 webpack 捆绑用于生产时,我的问题变得很明显,所有参数名称都被破坏了,原始名称也丢失了。

我在 webpack 配置中找不到任何可以帮助我的选项。

有没有一种方法可以做我想做的事,而不会使导出函数的模块担心与此问题相关的任何事情?

查看 webpack TerserPlugin 缩小选项: From here

您可以自己处理此文件缩小或根本不缩小。

类似的东西:

module.exports = {
  optimization: {
    minimize: true,
    minimizer: [
      new TerserPlugin({
        minify: (file, sourceMap) => {
          if (file.name == <Your_file_with_DI_function>) {
              return null;
          }

          const { error, map, code, warnings } = require('uglify-module')
               .minify(file, {
              /* Your options for minification */
            });

          return { error, map, code, warnings, []};
        },
      }),
    ],
  },
};

我想做的是不可能的。

当代码到达最小化插件时,它已经被连接成一个包文件。

另一种选择是使用 uglify-loader,但这仅适用于模块级别,因此您剩下的是包装实际模块的非压缩代码。