Node.js 需要验证我对开发依赖关系和依赖关系的理解

Node.js 需要验证我对开发依赖关系和依赖关系的理解,node.js,reactjs,babeljs,package.json,Node.js,Reactjs,Babeljs,Package.json,我是一个初学者(学习web开发大约15天),我目前正在学习React和其他东西,如果这听起来太琐碎,我很抱歉 我试图理解devdependency和dependency之间的区别以及它们的正确用法 我试图从文档和stackoverflow问题中找出答案,但我不能100%确定我是否有这个权利。因此,请回顾我现在的理解,并让我知道,如果我有这个权利到目前为止 定义 依赖项:只有最终将由生产构建使用的包。这些将出现在最终的package.json文件中 DevDependencies:简化我的开发工

我是一个初学者(学习web开发大约15天),我目前正在学习React和其他东西,如果这听起来太琐碎,我很抱歉

我试图理解devdependency和dependency之间的区别以及它们的正确用法

我试图从文档和stackoverflow问题中找出答案,但我不能100%确定我是否有这个权利。因此,请回顾我现在的理解,并让我知道,如果我有这个权利到目前为止

定义

  • 依赖项:只有最终将由生产构建使用的包。这些将出现在最终的package.json文件中

  • DevDependencies:简化我的开发工作并最终不会被产品/应用程序使用的包。这些将不会包含在最终生成的package.json文件夹中

正确使用的重要性

非常重要,因为正确地将依赖项排除在依赖项之外可以使应用程序更轻。同时,不正确地排除必需的依赖项将导致我的应用程序崩溃

实例

在我的教程中创建的package.json文件中,我有以下包,并且我提到了根据我目前的理解,包应该具有的依赖类型。如果我有什么地方出错,请告诉我:

  • 巴别塔cli:Devdependence
  • 巴别塔核心:依赖性
  • 巴别塔装载机:DevDependence
  • babel插件转换类属性:devDependency
  • 巴别塔预设环境:DevDependence
  • 巴别塔预设反应:依赖性
  • css加载程序:devDependency
  • 节点sass:依赖关系
  • 反应:依赖性
  • react-dom:依赖关系
  • 反应模式:依赖
  • sass加载程序:依赖项
  • 样式加载器:依赖项
  • 验证器:依赖项
  • 网页包:开发人员依赖项
  • Web包开发服务器:开发依赖项

如果我有任何错误,请告诉我。devdependency仅是开发环境中所需的依赖项,或者是构建UI所需的依赖项。例如,nodemon是开发依赖项,因为您永远不会使用它运行应用程序

将依赖项从普通依赖项中分离出来的优点之一是,在构建最终层时,docker映像的大小更小

例如,在我的dockerfile中,我将运行一套测试,并构建需要npm安装的UI,但在构建实际运行的最终映像时,我只需通过docker复制构建的UI文件,然后我将运行npm安装--生产,这样我的devDependencies就不会安装并膨胀我的node_modules文件夹


希望这能有所帮助。

devdependency
是模块依赖项,仅在web应用程序的主动开发过程中需要。例如,当您将新功能编码到web应用程序中时。大量的
devdependency
将使您的开发更加容易,并可以提供诸如皮棉、捆绑、传输等功能

相反,常规的
依赖项是web应用程序运行时所必需的模块。也就是说,当其他用户希望与您的web应用程序交互时,这些是web应用程序正常工作所必需的依赖项

注意:我所说的模块是指您正在利用的库中的底层代码。可以找到更完整的定义

您对包含超出生产捆绑包所需的代码的担忧是正确的,我建议您阅读更多关于。然而,在一开始,我会鼓励人们首先获得一个工作的代码库,并随着技能集的增长不断迭代和改进代码。一路提高绩效

最后,一些常见类型的
devdependency
包括用于测试代码库、构建、缩小、捆绑、传输和整理代码的库


希望这有帮助

这更像是运行时与开发时的区别。我认为这些东西中的大多数都是DevDependence,因为在为应用程序提供服务时,您不需要运行
节点sass
。Webpack会把一个
dist
文件夹放在一起,你可以把它交给任何你需要的静态服务器。该静态服务器可能是一个依赖项。然而,我不会因为这一区别而陷入困境。你在过早地优化,而不仅仅是开发。我在这里写了一个关于另一个对区别感到困惑的问题的答案:@zero298:谢谢你的回答。我现在不是在发展,只是在学习概念。但我很感激你的担心,我可能想得太多了,在我深入研究的过程中,我可能会发现这一点。谢谢。我会检查这些。如果回答了你的问题,请考虑接受我的答案