Jon*_*mon 4 node.js npm angularjs
我是Node/Angular世界的新手(来自Ruby),我只是想知道......
为什么npm默认在项目中本地安装模块?
我已经使用yeoman.io和mean.io来创建两个独立的项目,在这两种情况下,他们最终都会在项目的node_modules目录中添加一大堆文件夹,用于grunt和karma以及表达所有这些内容.我知道你可以将文件夹添加到.gitignore,但这并没有改变这样一个事实:你可能会在你的计算机上放置一大堆相同库的重复实例.
为什么默认情况下将包添加到本地项目目录?有没有办法强制npm默认安装全局而不是本地?
注意:在Ruby世界中,gem(相当于npm)通过自动生成"锁定文件" 来跟踪安装了哪个特定版本.这允许人们完全控制基于每个项目的依赖项的版本.我开始怀疑npm不能全局安装的唯一原因是因为它没有"锁定文件"来跟踪应用程序正在使用哪些特定的颠覆.
在npm开发的早期,有很多关于此的讨论.人们希望避免使用Ruby,Perl等经历的版本不兼容问题.最后,我们简单地认为最简单的解决方案是根本没有全局库路径,但每个应用程序都有自己的库路径.
这个策略实际上并不新鲜.许多关于Ruby,Perl和Python的企业/任务关键安装使用自定义编译解释器和自定义库路径.很长一段时间,标准建议是,如果你真的不希望客户或OS发行版意外破坏你的应用程序,最强大的技术是不使用标准安装的库.
Npm将此作为默认配置.当人们问"为什么?"时,开发人员回答说这是最简单的解决方案,传统的做事方式在当今廉价的TB级硬盘世界中没有任何优势.
我个人不会改变npm工作的默认方式,即使我原本是那些主张共享库实现的人之一.节点模块作者假设您拥有默认配置,因此不怕对其API进行重大更改.
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |