Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
Javascript 在使用babel loader时,为什么要排除节点_模块?_Javascript_Webpack_Babeljs - Fatal编程技术网

Javascript 在使用babel loader时,为什么要排除节点_模块?

Javascript 在使用babel loader时,为什么要排除节点_模块?,javascript,webpack,babeljs,Javascript,Webpack,Babeljs,网站上提出的大部分问题是如何排除节点单元模块,但我想知道为什么我们要排除节点单元模块 module.exports = { mode: 'production', entry: './src/index.js', output: { path: path.join(__dirname, 'dist'), filename: 'app.bundle.js' }, module: { rules: [ { test: /\.js

网站上提出的大部分问题是如何排除
节点单元模块
,但我想知道为什么我们要排除
节点单元模块

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'app.bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/,
        options: {
          presets: ['@babel/preset-env']
        }
      }
    ]
  }
};

有人能给我解释一下排除节点模块的原因吗?

简言之,传输是一个昂贵的过程,许多项目有数千行(如果不是几十万行)的代码导入,巴别塔需要运行。您的
node_模块
应该已经可以运行,而不必像前面所说的那样进行传输,并且有一些简单的方法可以排除您的
node_模块
,但可以传输任何需要它的代码。看

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'app.bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/,
        options: {
          presets: ['@babel/preset-env']
        }
      }
    ]
  }
};

我已经看到了很多关于是否应该由开发人员承担应用程序库的传输工作或库开发人员的责任的争论。大多数情况下,传输都是为了支持浏览器,而库创建者不知道您需要支持哪些浏览器,因此他们最终要么传输,要么不传输,将其留在您手中。如果将它们传输到ES5,那你就是黄金,如果不是,那通常是一个足够简单的任务,找出哪些库导致了问题,然后自己传输它们

传输代码并不便宜,而且通常大多数npm模块已经可以在不传输的情况下运行了。因此,让每个文件都转到Babel是不必要的(而且速度很慢)。相关的:“您的node_模块应该已经可以在没有传输的情况下运行了”——正如后面的段落所述,这不一定是真的,根据目标浏览器的不同,可能需要传输导入的模块和/或添加polyfill。我的意思是说,开发人员应该尽自己的努力,为您传输到类似ES5的内容,但情况并非总是如此。我想我在这一点上不是很清楚。谢谢你的澄清如果我们转寄它会有问题吗?在我的例子中,当使用webpack和babel loader时,如果我传输node_模块,一些用法是突破性的,我们如何知道何时需要从node_模块传输模块/如果它是一个遗留应用程序?仔细阅读所有package.json依赖关系文档?或者我想知道是否有一个静态解析器可以运行我的webpack条目对象