我什么时候应该创建自己的模块包而不是使用其他包?

When should I create my own module package instead of using other packages?

我还是一个新的 node js 开发者,目前正在构建一个个人项目,我最近发现 npm 上有与我正在开发的东西类似的开源包。

这些包带有我还没有想出的新的高级概念,提供了比我想要的更多的选项,但在思考之后,我想到为什么不开发一个像我一样在我的项目中为我服务的包想要而不是使用我不会在我的项目中使用超过 5% 的函数的包?

使用现有 well-supported 模块的好处:

  1. 您可以为其他人尚未编写的内容节省开发时间,从而使您的项目取得更快的进展
  2. 经过社区的良好测试(pre-tested 代码为您节省了大量时间)
  3. 其他人发现并修复错误(不要低估这个的重要性)
  4. 代码可能会被保留 up-to-date 随着技术的不断变化
  5. 可能的社区人员提出关于该软件包的问题

Non-issues 使用现有的 well-supported 模块:

  1. 对于 server-sidenodejs 开发来说,代码大小很少是一个问题,因此一个包可能包含您不需要的额外代码这一事实通常不是一个具有任何后果的实际问题。如果代码大小是最重要的(比如你在小型嵌入式系统上 运行),那么 nodejs 本身可能不是正确的环境,因为它并不十分紧凑。

不使用现有 well-supported 模块的原因:

  1. 您不允许在您的项目中使用 open-source 代码(但如果是这种情况,您就不会使用 nodejs)。
  2. 没有现有模块可以满足您的要求。
  3. 做你想做的事情的现有模块似乎没有得到很好的支持,或者有很多相关的错误已经开放了很长时间。在这种情况下,如果您克隆存储库并将其用作您自己的模块的起点或学习点,这仍然是值得的。

I'm still a new node js developer, currently building a personal project, and I recently found out that there are open source packages available on npm similar to the thing I'm developing.

IMO,这是进行 nodejs 开发的神奇调味料的一部分。庞大的开源包存储库(通过 NPM)非常易于使用,使您的开发比自己从头开始开发一切都更有效率。

why not develop a package that serves me in my project the way I want instead of using packages where I won't use more than 5% of the functions in my project?

在 server-side 环境中,未使用的代码不会真正让您付出任何代价。如果你真的想要,你可以使用支持 tree-shaking 的捆绑器,它会删除你不使用的代码。

真正重要的问题是现有模块是否满足您的需求,或者是否足够接近您只需编写一点代码即可使用它。如果是这样,那么问题就变成了:“为什么我要用我宝贵的开发时间从头开始编写一个包,而我可以通过使用已经存在的东西来使用更少的开发时间免费提供,已经过测试和证明,然后将开发时间(我会花时间开发那个包)花在其他能使我的 product/service 更进一步的事情上?

在很多方面,这与使用 nodejs 内置的 fs 模块没有什么不同。您使用它是因为它已经过开发和测试,并且可以节省您开发自己的文件访问模块的时间。是的,fs 模块包含许多您可能永远不需要的代码,但这不是问题所在。问题是它是否已经包含您确实需要的代码。