express-validator
模块使用的依赖项。解决方法
方案一
需要一些Node.js专家。为了减少下载的软件包数量,专业的Node.js开发人员可以进入模块保存的目录,打开javascript文件,查看它们的源代码,并删除他们不使用的函数,而不改变包的结构。
方案二(不值得花时间)
您也可以创建自己的个人依赖项,这些依赖项是用C++编写的,或者更好地使用js编写,这将根据程序员而定,实际上占用最少的空间,但会浪费最多的时间,以减小大小而不是完成工作。(注意:大多数依赖项都是用js编写的。)
方案三(常见)
与使用方案二相反,您可以实现WebPack。
结论和注释
基本上,无法避免下载所有的节点包,但如果您相信自己能够做到,可以使用解决方案1,这也有可能破坏依赖关系的整体意图(因此请将其个性化并仅用于特定目的)。或者只需利用像WebPack这样的模块。此外,请问自己:这些包真的会给您带来问题吗?pip
或easy_install
安装的。当你需要一个特定的包时,你只需要输入pip install package
,你就能得到这个包了,这个包可能有数百个其他包的依赖,但是你需要自己提供它们,否则在运行脚本时会提示缺少包。对于JavaScript也可以这样做(并在缺少某个东西时进行控制台提示)。 - RA.export
到一个文件中,并将该文件链接到你的HTML文件中。至于第一个问题,是的,这只是它的一个缺点。@DonaldDuck - Ahmed Can Unbay这是一个很老的问题,但我碰巧遇到了非常相似的情况,就像RA
所指出的那样。
我尝试使用vscode
框架来工作,并在尝试使用npm init -y
安装npm时,它生成了许多不同的依赖项。在我的情况下,是在运行npm init -y
之前添加的vscode
扩展ESlint
ESlint
vscode
以应用该卸载package.json
和node-modules
文件夹npm init -y
这解决了我开始使用如此多依赖项的问题。
然而,当您需要证明所有npm模块的许可证时,这也会产生另一个副作用...因此,当由于依赖关系而有数百个npm模块时,这项工作也变得更加繁琐。
require
并消除死代码,您将失去自动应用于您的代码的依赖项维护补丁的好处。您应该将其视为一种编译,因为...嗯...它就是编译。不,如果你只是想添加一些模板,就没有必要在你的项目中添加大约900个包依赖。但这取决于你自己!
一个模板的重量并不会对node.js生态系统或其主要包系统npm造成挑战。
事实上,javascript社区倾向于制作最小可能的模块来负责一个任务,仅此而已。我想这并不是一件坏事。但这可能会导致你的项目中有很多依赖项。
现在,硬盘内存很便宜,没人再关心制作高效/小型应用程序了。
像往常一样,这只是一个选择问题。
npm install --only=prod
如果你的项目需要在生产环境中使用许多项目,而你真的非常希望避免这些麻烦,那么就花一些时间,并包含你的项目所需的CSS / JS文件(这可能是一个费力的任务)。
更新
生产环境与默认安装
大多数项目具有不同的开发和生产依赖项。
开发依赖可能包括SASS、typescript等编译器,uglify(代码压缩),甚至像实时刷新等东西。
而生产版本将不会包含这些内容,从而减小了node_modules
目录的大小。
**没有node_modules
**
在一些html模板项目中,您可能不需要在生产中使用任何node_modules
,因此可以跳过执行npm install
。
无法访问node_modules
或者在某些情况下,当用于服务的服务器本身存在于node_modules
中时,可能会阻止对其进行访问(因为没有必要从前端访问它们)。
packageA
的根目录下,输入npm install
命令时,将会从packageA
的package.json
文件中安装所有的dependencies
和devDependencies
。如果你输入npm install -s packageB
命令,则只会安装packageB
的常规dependencies
,以供packageA
使用。使用devDependencies
来构建模块所需的内容,使用dependencies
来使用模块所需的内容。 - skylize
pnotify
使用了 4 个包:https://github.com/sciactive/pnotify/blob/master/package.json#L18。 - alexmacnpm ls
,它将显示已安装软件包的列表。 - alexmac