Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

npm node_modules文件夹的层级处理以及版本前符号~和^ #30

Open
yuandaishi opened this issue Feb 14, 2020 · 0 comments
Open
Labels
node something about node

Comments

@yuandaishi
Copy link
Owner

yuandaishi commented Feb 14, 2020

我们在使用npm安装module的时候,以前一个module如果和别的module有依赖关系的话,则别的module会被安装在这个module文件夹里面。这种方式会产生两个问题.
1. 假如安装module a,a依赖module b,b依赖module c,这个时候,文件夹的层级嵌套至少有3层了,如果依赖关系更多的话,则文件夹的层级嵌套会难以处理,而且window的文件夹层级嵌套是有限制的
2. 假如module a和 module b 都依赖于module c,这module c 会被安装两次
所以新版本的npm在安装module时,会让所有的module(即使是依赖关系的module)都安装在node_modules文件夹的一级目录下。
但也有一些例外,假如两个module依赖的module相同,但是版本号不同,那么最新版本会被安装
到node_modules文件下的一级目录下,而另外一个版本,会被安装到需求的module文件夹下。

package.json的包版本号前常有~和^符号,如下
"mongoose": "^5.8.12", "underscore": "^1.9.2",这是什么意思呢?
表示如果module包文件有更新的时候,会下载最新的包文件,这样有可能会导致我们不同时期的代码,依赖的包的版本不一致,所以现在出现了package-lock.json文件,保证不同时期,安装的依赖包是同一个版本
现在当前包文件版本的npm指令:npm list。
如果不想展示关联的包文件,只展示一级包文件包,指令为:npm list --depth=0
查看某个包信息:npm view 包文件名
查看某个包的依赖关系:npm view 包文件名 dependencie
查看某个包历史版本:npm view 包文件名 versions
查看当前包的安装版本和最新版本信息:npm outdated
查看安装的所有全局包:npm -g outdated
npm update只会更新到当前大版本的最新版本,而不会更新大版本号
参考:package-lock.json的作用

@yuandaishi yuandaishi added the node something about node label Feb 14, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
node something about node
Projects
None yet
Development

No branches or pull requests

1 participant