为什么我创建的npm包在安装时会有一个node_modules文件夹作为另一个模块的依赖?

wbgh16ku  于 11个月前  发布在  Node.js
关注(0)|答案(2)|浏览(167)

我刚刚发布了我的第一个npm包。当我将包作为依赖项安装在项目中时,我打开node_modules中的项目文件夹,看到它也有一个node_modules文件夹,文件夹中有一个包history。我的项目没有任何常规依赖项,只有开发依赖项,所以我不明白为什么会发生这种情况?你可以看到我的package.json文件,并尝试从github页面安装模块https://github.com/danielyaa5/react-contextulize

vc9ivgsu

vc9ivgsu1#

在许多情况下,运行npm install安装devDependencies
尝试在生产模式下显式安装:

npm install --only=production

字符串
这里是一个相关的答案与更多的信息。

i34xakig

i34xakig2#

当你将一个npm包作为另一个模块的依赖项安装时,npm会将这个包连同它的依赖项一起沿着安装在依赖模块的node_modules文件夹中。这是npm如何管理依赖项的一个基本方面。
以下是发生的事情的分解:
依赖分辨率:当您在package.json文件中指定一个包作为依赖项时,npm会确定该包及其依赖项与您的项目兼容的版本。此信息存储在node_modules文件夹中。
相关安装:npm将指定的包及其依赖项安装在项目的node_modules文件夹中。每个依赖项在node_modules中有自己的文件夹。
范围内的权限:如果您的包有自己的依赖项,它们将安装在包文件夹内的嵌套node_modules文件夹中。这确保每个包都可以有自己独立的依赖项集,而不会与其他包的依赖项发生冲突。
扁平结构与嵌套结构:默认情况下,npm会尝试维护平面结构,这意味着它会尝试将所有依赖项安装在顶层的单个node_modules文件夹中。然而,在某些情况下,由于依赖项冲突,嵌套结构是不可避免的。
包中的node_modules文件夹可能包含包正常运行所需的依赖项。
Package 尺寸:一些npm包可能包含在安装过程中执行的脚本。这些脚本可能执行额外的设置或配置。
总而言之,包中的node_modules文件夹在作为依赖项安装时,包含包在依赖模块的上下文中正确运行所需的依赖项。标准做法是封装每个模块的依赖项,以避免冲突并确保清晰的依赖项树。

相关问题