为什么不是所有的 Angular 包都声明为 devDependency?

lon*_*nix 2 angular

我知道节点/快递。dependencies我知道和之间的区别devDependencies

我正在学习角度。我已经看完了官方教程。

我认为有角度的应用程序在开发时被编译成一组静态文件。这些文件被上传到某个服务器。一旦客户端下载它们,所有操作都会在客户端中发生,除非它到达我的节点/express 服务器获取数据。

所以我不明白为什么脚手架的角度项目有package.json和。我假设所有内容都在 中,因为运行时没有,只有引导文件,然后是所有已编译的 javascript。dependenciesdevDependenciesdevDependenciespackage.jsonhtml

我显然误解了部署阶段。有不对的地方请指正。

lon*_*nix 5

我想找到了答案

deps 和 devdeps 都只在开发时使用,而不是在运行时使用(因为运行时没有清单,只有 html 和编译的脚本)。这就是我困惑的根源。

然而,编译阶段仅编译和捆绑 deps 中找到的引用

添加到 1) 树摇动,以及 2) 您可能会无意中消除下游模块(如果引用为 devdeps 而不是 deps),这意味着它们必须位于 deps 部分。

因此,这是编译器知道要捆绑什么的语义线索 - 这不是开发时间与运行时的问题。所以这很令人困惑,因为这与服务器端的工作方式有细微的差别。