Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 网页包不再缩小捆绑包_Node.js_Webpack_Minify_Bundling And Minification - Fatal编程技术网

Node.js 网页包不再缩小捆绑包

Node.js 网页包不再缩小捆绑包,node.js,webpack,minify,bundling-and-minification,Node.js,Webpack,Minify,Bundling And Minification,我正在编写一个npm模块,它通过node vs cli运行webpack编译器。我已经有一段时间没有测试我的构建功能了,因为它正在工作,但我最近运行了它,而且我似乎无法让webpack缩小捆绑包js。对我的节点、网页包和一些依赖项版本进行了一些小的更新,但没有重大的升级&没有破坏性的更改。 我一直在竭尽全力想让这一切重新开始,我正在向社区伸出援手,让我保持清醒 一切似乎都很好,只有缩小似乎停止了工作。优化对象是作为此故障排除的一部分添加的,并且在没有以前的问题的情况下可以正常工作 假设配置看起来

我正在编写一个npm模块,它通过node vs cli运行webpack编译器。我已经有一段时间没有测试我的构建功能了,因为它正在工作,但我最近运行了它,而且我似乎无法让webpack缩小捆绑包js。对我的节点、网页包和一些依赖项版本进行了一些小的更新,但没有重大的升级&没有破坏性的更改。 我一直在竭尽全力想让这一切重新开始,我正在向社区伸出援手,让我保持清醒

一切似乎都很好,只有缩小似乎停止了工作。优化对象是作为此故障排除的一部分添加的,并且在没有以前的问题的情况下可以正常工作

假设配置看起来正常,网页包或节点中是否有任何新内容可能会阻止此操作?我被难住了

网页包配置

({
  devtool: 'source-map',
  entry: '/foo.js'
  externals: [nodeExternals()],
  mode: 'production',
  target: 'web',
  module: {
    rules: [
      {
        test: /\.coffee$/,
        use: [
          {
            loader: 'babel-loader'
          },
          {
            loader: 'coffee-loader'
          }
        ]
      },
      {
        test: /\.js$/,
        use: [
          {
            loader: 'babel-loader'
          }
        ]
      },
      {
        test: /\.(sass|css)$/,
        use: [
          {
            loader: Extract.loader,
            options: {
              sourceMap: true
            }
          },
          {
            loader: 'css-loader',
            options: {
              sourceMap: true
            }
          },
          {
            loader: 'sass-loader',
            options: {
              sourceMap: true
            }
          }
        ]
      }
    ]
  },
  optimization: {
    minimize: true,
    noEmitOnErrors: true
  },
  output: {
    filename: 'project_1.0.0.js',
    path: '/build'
  },
  plugins: [
    new Write,
    new Extract({
      filename: 'project_1.0.0.css'
    })
  ],
  resolve: {
    modules: ['node_modules']
  }
});
更新:找到解决方案
该问题是由output.filename的扩展名
.jss
引起的。将其更新为just
.js
修复了该问题。然而,在我看来,这仍然是一个奇怪的结果。如果我好奇的话,我可能会发布另一个更新,解释webpack的行为

我怀疑,既然您手动添加了
优化
部分,那么您现在也需要手动定义
最小化
属性。试着这样做:

const TerserPlugin = require('terser-webpack-plugin');

// ...

{
    optimization: {
        minimize: true,
        minimizer: [
            new TerserPlugin({
                terserOptions: {
                    parse: {
                        ecma: 8
                    },
                    compress: {
                        ecma: 5,
                        warnings: false,
                        comparisons: false,
                        inline: 2
                    },
                    mangle: {
                        safari10: true
                    },
                    output: {
                        ecma: 5,
                        comments: false,
                        ascii_only: true
                    }
                },
                parallel: true,
                cache: true,
                sourceMap: true
            })
        ];
    }
}

因此,在为stack overflow post模拟webpack config js对象的过程中(我为一些值提供了一些变量和函数),我注意到对于output.filename,我使用了
project.js
,而不是
project.js
。我把它和提取插件文件名混淆了,并做了一个js/css混合扩展。。。当我将其更正为.js时,它现在又可以工作了。。。这很好。。。但是

为什么会打破它?显然,您不能只创建一个包含您想要的任何扩展的包。。。但是为什么它不会抛出错误,为什么缩小是唯一不起作用的事情。。。这些都是更多的反问句,但我内心的程序员想弄清楚原因。。看起来做它正在做的事情需要额外的工作

@感谢您抽出时间回复。如果我没有在那里格式化缩进以尝试您的代码,我不确定我会捕捉到这一点。:)