为什么不是所有的角度包都声明为devDependencies?

时间:2019-02-21 07:27:31

标签: angular

我知道节点/表达式。我知道if (strpos($address_input, ',') !== false) { $arr = explode(', ', $address_input); if (count($arr) > 1) { $address = implode(', ', array_slice($arr, -2)); } } dependencies之间的区别。

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

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

所以我不明白为什么脚手架角工程同时具有devDependenciespackage.json的{​​{1}}。我假设所有内容都将放在dependencies中,因为在运行时没有devDependencies,只有引导devDependencies文件,然后是所有已编译的javascript。

我显然误解了部署阶段。请纠正我错了的地方。

2 个答案:

答案 0 :(得分:1)

Dev依赖关系只能使您的生活更轻松,从而可以更快地进行开发/故障排除/测试。它们被标记为这样,因此它们不会占用您最终的版本。同样,通过这种方式,您还具有全局标志。这用于例如跨项目使用的工具/ cli。 nodemon是一个例子...等等

答案 1 :(得分:1)

我认为找到了the answer

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

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

此外,还包括:1)摇树,以及2)您可能无意中消除了下游模块(如果称为devdeps而不是deps),则意味着它们必须位于deps部分中。

因此,这是编译器知道捆绑内容的语义线索-这不是devtime与运行时的问题。因此令人困惑,因为这与服务器端的工作方式有细微的差别。