Javascript 排除选项与网页包中的入口点

Javascript 排除选项与网页包中的入口点,javascript,node.js,webpack,config,Javascript,Node.js,Webpack,Config,如果您在Webpack中有一个入口点,这难道不意味着Webpack只会捆绑和转换该入口点中的文件或该入口点要求的文件吗?这将自动否定或排除该入口点文件不需要的文件,对吗?为什么您仍然需要在加载程序配置中为节点\u模块中的文件添加排除选项?这在你的入口点中不是required,所以我认为webpack会完全忽略这些文件,或者我缺少了一些魔力?如果没有“排除”选项,加载程序会自动尝试转换项目中的所有文件吗?规则不包括任何文件,但会将加载程序应用于满足条件的任何导入模块。规则上的exclude选项仅决

如果您在Webpack中有一个入口点,这难道不意味着Webpack只会捆绑和转换该入口点中的文件或该入口点要求的文件吗?这将自动否定或排除该入口点文件不需要的文件,对吗?为什么您仍然需要在加载程序配置中为
节点\u模块中的文件添加排除选项
?这在你的入口点中不是
require
d,所以我认为webpack会完全忽略这些文件,或者我缺少了一些魔力?如果没有“排除”选项,加载程序会自动尝试转换项目中的所有文件吗?

规则不包括任何文件,但会将加载程序应用于满足条件的任何导入模块。规则上的
exclude
选项仅决定加载程序是否应处理已导入的文件

node\u模块
通常被排除在
.js
规则之外,因为通常没有理由对它们进行转换,因为大多数包在发布之前都已被传输。必须处理您正在使用的整个
node\u模块
,将大大增加构建时间,即使它只是一个加载程序,至少它必须解析模块并返回一个有效的模块,这已经需要一些时间

排除
包括
选项还有其他用途。例如,您可以决定将其用于您的项目,但您有一些第三方库依赖于常规(全局)CSS,并且您无法轻松更改使用CSS的代码。您可以定义以下规则:

{
  // For all .css files except the ones in 3rd-party-lib
  test: /\.css$/,
  exclude: /3rd-party-lib/,
  use: [
    'style-loader',
    { loader: 'css-loader', options: { modules: true } }
  ]
},
{
  // For all .css files in 3rd-party-lib
  test: /\.css$/,
  include: /3rd-party-lib/,
  use: ['style-loader', 'css-loader']
}

从改变一个选项到使用完全不同的装载机,即使它可能与文件类型相同。

因此,您永远不必排除节点\u模块中的任何内容,因为它们永远不会包含在加载程序中,对吗?如果您不希望加载程序处理它们,您确实需要排除它们。您导入的所有内容都将按照规则进行测试。这只是你不导入的模块,而不是网页包首先包含的模块。但很可能您不想对包含的文件应用某些加载程序。例如,当您使用
react
(将是
node\u modules/react
)时,您不需要使用babel对其进行传输,因此您可以将其排除在外,对于其他
node\u modules