Javascript 为什么我们需要在网页包中排除节点_模块?

Javascript 为什么我们需要在网页包中排除节点_模块?,javascript,typescript,webpack,Javascript,Typescript,Webpack,下面是一个网页包配置文件: module.exports = { mode: "development", entry: "./src/index.ts", output: { filename: "bundle.js" }, resolve: { extensions: [".ts"] }, module: { rules: [ { test: /\.ts/, use: "ts-loader", exclude:

下面是一个网页包配置文件:

module.exports = {
    mode: "development",
    entry: "./src/index.ts",
    output: { filename: "bundle.js" },
    resolve: { extensions: [".ts"] },
    module: {
        rules: [
            { test: /\.ts/, use: "ts-loader", exclude: /node_modules/ }
           }
        ]
    }
};
我不明白为什么在处理typescript文件时需要排除node_模块?以下是我的观点:

1-首先,几乎所有的包都是用js编写的,而不是用ts编写的,如果我们包含node_模块,这不会有什么坏处

2-如果我们引用的是用ts编写的包,我们肯定希望ts代码被编译成js代码,那么我们必须包含node_模块,以确保一切正常,不是吗

1-首先,几乎所有的包都是用js编写的,而不是用ts编写的,如果我们包含node_模块,这不会有什么坏处

在传输阶段排除
node\u模块
,可以提高性能,否则可能会受到影响

如果我们引用的是一个用ts编写的包,我们肯定希望ts代码被编译成js代码,那么我们必须包含node_模块以确保一切正常,不是吗


是的,然后是这里的钥匙。在传输阶段排除
node\u模块
,并不能阻止webpack在捆绑阶段使用其内容。

否则编译项目不会花很长时间吗?@zerkms为什么编译项目会花很长时间?例如,我刚刚在index.ts中导入了React包,这个网页包只会将React js文件与index.js组合在一起。你试过了吗?@zerkms我试过了。但我想知道为什么要花很长时间来编译一个项目,因为我肯定对它有误解“我想我必须排除”——这取决于你。如果你需要处理一些事情-你处理一些事情;如果你没有-你没有。不要仅仅因为一本书上有这样的描述就去实现一些东西,但是如果你需要的话就去实现一些东西。对不起,我仍然很困惑,在传输阶段排除节点_模块是如何提高性能的,你能给我一个场景吗?假设webpack使用的助手来传输Typescript文件(webpack本身不这样做)正在解析导入时搜索某些.ts或.js文件。找不到该文件,因此将出现错误。如果帮助程序在
node\u modules
下查找此文件,则在触发错误之前会有很大的延迟(因为
node\u modules
)。在“TypeScript如何解析模块”标题下特别提到了在
节点_modules
下搜索文件。