javascript – npm安装许多依赖项

前端之家收集整理的这篇文章主要介绍了javascript – npm安装许多依赖项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近买了一个 HTML模板,它包含许多放在bower_components目录下的插件和一个package.js文件.我想安装另一个我喜欢的软件包,但是为了这个目的我决定使用npm.

当我输入:

npc install pnotify

已创建node_modules,其中包含大约900个目录和另一个包.

那些是什么?为什么他们和我的包装一起安装?我做了一些研究,结果证明那些是必需的,但实际上,我是否需要在生产中提供数百个不必要的包?

解决方法

这是一个非常好的问题,我想指出一些事情.

V8引擎,节点模块(依赖项)并要求它们

Node.JS建立在V8引擎上,它的源代码是C.这意味着Node.JS的依赖关系基本上是用C语言编写的.

现在,当您需要依赖项时,实际上是从c程序中取出代码/函数.这就是库/依赖关系的制作方式.

图书馆有很多你不会使用的功能

例如,看一下 express-validator module.它有很多功能.当您需要该模块时,您是否使用它提供的所有功能?答案是不.人们需要这样的包只是为了使用它的一个好处,并且所有的功能最终都被下载,这占用了不必要的空间.

将其他节点依赖关系中的节点依赖关系视为解释语言

例:
Javascript是用C/C++语言编写的,这些语言是用汇编语言编写的.把它想象成一棵树.您每次都可以创建新分支以方便使用,最重要的是节省时间.它使事情变得更快.这就是创建新依赖项的类似情况,当人们创建一个新的依赖项时,他们使用(需要)已经存在的依赖项,而不是编写一个完整的C程序,因为这样可以使一切变得更容易.

当需要其他NPM来创建新NPM时会出现问题

当依赖关系的作者需要来自这里的其他依赖关系时,只需要使用它们的一些(少量)好处,他们最终会全部下载它们(他们并不真正关心,因为他们宁愿这样做而不是明确地在C)中写一个新的插件,这需要额外的空间.例如,您可以看到express-validator模块使用from
this link.
的依赖项

因此,当您拥有使用大量依赖项的大型项目时,您最终会为它们占用大量空间.

如何解决这个问题

1号

>这需要Node.JS上的一些专家.为了减少下载的包的数量,专业的Node.JS开发人员可以转到保存模块的目录,打开javascript文件,查看他们的源代码,并删除他们不会使用的功能而不更改包的结构.

2号(几乎不可能)

>您还可以创建自己的个人依赖关系,这些依赖关系是用C语言编写的,这将占用最少的空间,但需要花费最多的时间.我不建议这样做!为了这种目的,你需要C语言专家.

结论&&注意

因此,基本上没有逃避下载所有节点包,但如果您认为可以使用解决方案,则可以使用解决方案编号1,或者让其他人处理它.我仍然认为这不是一个好主意.

另外,问自己这个问题,这些包真的会引起你的问题吗?

猜你在找的JavaScript相关文章