npm与package.json

npm与package.json

nodejs入门教程

从概念上讲,npm-install的“输入”是package.json,而其“输出”是一个完整的node_modules树:表示您声明的依赖项。在理想的世界中,npm就像一个纯函数一样工作:package.json相同的node_modules 树应该随时产生完全相同的树。

但是在许多其他情况下,npm无法做到这一点。原因有很多:

  1,可能已经使用了不同版本的npm(或其他软件包管理器)来安装软件包,每种版本使用的安装算法略有不同。

  2,自上次安装软件包以来,可能已经发布了直接semver-range软件包的新版本,因此将使用较新的版本。

  3,您的一个依赖项的一个依赖项可能已经发布了一个新版本,即使您使用固定的依赖项指定符(1.2.3代替^1.2.3),该版本也会更新。

  4,您从中安装的注册表不再可用,或允许版本发生变化(与主要的npm注册表不同),并且现在在同一版本号下存在一个软件包的不同版本。

package-lock.json的存在会更改安装行为,从而:

  1,包锁描述的模块树被复制。这意味着使用“已解决”中引用的特定文件(如果有)来重现文件中描述的结构,如果没有,则使用“版本”降到正常的包解析度。

  2,遍历树,以常规方式安装所有丢失的依赖项

当我们使用 nvm 切换不同 node 版本的同时,npm 的版本同时也会被切换掉(因为不同node版本自带的npm版本不同),所以当我们切换npm版本的时候,若遇到运行或者安装报错,建议执行如下命令

 npm cache clear --force
 npm uninstall 
 rm -rfv node_modules
 rm -rfv package-lock.json
 npm install

即先删除npm安装模块node_module,然后清除node_module的缓存,删除包锁定文件package-lock.json文件,最后重新安装依赖

@萍2樱释ღ( ´・ᴗ・` )