何时添加依赖关系? 有没有我应该复制function的情况?
我最近帮了一个项目,在那里添加了一个非常小的依赖关系 – 事实上,它只包含一个正则expression式( https://www.npmjs.com/package/is-unc-path )。
我从项目开发人员那里得到的反馈是,如果他们可以很容易地实现,他会尽量减less第三方的依赖关系 – 如果我理解正确,他会要求我只是复制代码而不是添加其他依赖项。
对我来说,添加一个新的依赖关系看起来就像在代码库中添加一些代码到一个额外的文件。 另外,如果代码需要更改,开发人员将得到更新通知。
推动开发者这样做只是一个宗教思想吗? 添加依赖项时是否有任何成本(性能或空间等)?
我曾经和我的pipe理者有过一次关于第三方库的争执,问题就更大了,他相信你应该修改node_modules
文件夹。
任何冲突的根源通常是无知。
他的论点是:
- 你应该向客户提供一个工作产品,而不需要他做任何其他的工作,比如npm install
- 如果
github
,npm
在你运行npm install
的那一刻就closures了,你会做什么? - 如果你安装的库有一个错误谁将负责
我的论点是:
- 由于程序包依赖关系的工作原理,版本控制
node_modules
不起作用,每个库都会下载他自己的node_modules
依赖项,然后你的git仓库将迅速增长到数百MB。 部署将变得越来越慢,每次下载半个gb代码需要花费时间。 NPM确实使用模块caching机制,如果没有改变,它不会无用地下载代码。 -
left-pad
的问题是痛苦的,但之后,npm
实现了一个locking系统,现在对于每个包,你只是locking一个特定的提交散列。 - 而Github和npm并不只有一个实例服务,它们运行在云端。
- 在安装依赖关系时,你总是有一些想法背后,有社区的最佳实践,通常他们恢复到: 1.回购是否有unit testing 。 2.下载号码 3.什么时候是最新的更新 。
- Node.js生态系统是build立在模块化基础之上的,并不是节点是如此受欢迎的原因,而是如何devise创build模块和重用它们的原因。 有时在node.js环境下工作,感觉就像把乐高积木放在一起,build造你的玩具。 这是node.js超快发展的主要原因。 人们只是重用东西。
最后,他坚持自己的想法,我离开了项目:D。