Javascript webpack排除属性vs webpack节点外部包

Javascript webpack排除属性vs webpack节点外部包,javascript,node.js,reactjs,webpack,server-side-rendering,Javascript,Node.js,Reactjs,Webpack,Server Side Rendering,在webpack服务器配置文件中 module: { rules: [ { test: /\.js?$/, loader: "babel-loader", exclude: /node_modules/, } ] } 排除意味着不编译这些目录,在这种情况下,它只是节点_模块。但是,也有webpack节点外部包 const nodeWebExternals = require("webpack-node-

在webpack服务器配置文件中

module: {
    rules: [
      {
        test: /\.js?$/,
        loader: "babel-loader",
        exclude: /node_modules/,
      }
    ]
  }
排除意味着不编译这些目录,在这种情况下,它只是节点_模块。但是,也有
webpack节点外部

const nodeWebExternals = require("webpack-node-externals");
  externals: [nodeWebExternals()],
module.exports对象中的externals属性将告诉webpack,如果节点模块文件夹中存在任何库,则不要将该库捆绑到服务器上的输出捆绑包中


这两者之间的区别是什么?

排除选项告诉
babel loader
不要在
节点模块
文件夹中转换(现代语法到es5)。如果没有
externals
部分,webpack将不会转换语法,而是将捆绑正在使用的每个
node\u模块
转换为最终捆绑

通常,当捆绑服务器代码时,不需要捆绑节点模块,因为它作为文件夹存在于服务器中,因此,您告诉webpack将这些模块标记为外部模块,它将为模块生成常规节点,而不是模块代码