0

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

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

    // Do something with these parameters ...

    return response;
};

我可以通过解析函数的字符串表示来解决这个问题。已经有一个 SO 线程

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

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

有没有办法在不让导出函数的模块担心与此问题相关的任何事情的情况下做我想做的事情?

4

2 回答 2

0

看看 webpack TerserPlugin 缩小选项: 从这里

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

像这样的东西:

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, []};
        },
      }),
    ],
  },
};
于 2020-07-31T11:50:30.743 回答
0

我正在尝试做的事情是不可能的。

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

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

于 2020-07-31T22:15:01.427 回答