为什么`npm install`在版本号中添加/删除插入号(^)?

时间:2019-01-08 12:03:39

标签: npm npm-install

我有一个项目要与两台不同的笔记本电脑一起使用。有时,我会在项目中添加额外的软件包,因此必须使用npm install <package-name>(duh)。当我这样做时,我git push打开新的package.jsonpackage-lock.json文件,当我切换计算机时,我必须git pull进行这些更改,然后运行npm install再次将该软件包下载到另一台计算机上。

我最近注意到并开始关心一台笔记本电脑会在每个软件包版本号的开头不断添加插入符号(^)。例如:

一台计算机的软件包版本号如下:

"regexpu-core": {
  "version": "1.0.0",
  "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
  "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
  "requires": {
    "regenerate": "1.4.0",
    "regjsgen": "0.2.0",
    "regjsparser": "0.1.5"
  }
},

其他设置的软件包版本号如下:

"regexpu-core": {
  "version": "1.0.0",
  "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
  "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
  "requires": {
    "regenerate": "^1.2.1",
    "regjsgen": "^0.2.0",
    "regjsparser": "^0.1.4"
  }
},

我知道插入符号(^)并不精确,但我试图找出为什么我的不同笔记本电脑为软件包版本创建不同格式!我检查了this SO question,它对~^之间的区别有一些很好的解释,但是我没有找到任何解释为什么npm有时会添加有时会删除插入符号的原因( ^)。我还查看了this npm issue on Github,它建议查看npm的配置设置,但是我的两台笔记本电脑都具有相同的设置:

  • npm config get save = true(两台计算机)
  • npm config get save-prefix = ^(两台计算机)
  • npm config get save-exact = false(两台计算机)

一台笔记本电脑正在运行npm版的5.6.0,但是我刚刚将其更新为6.5.0。另一台计算机正在运行版本6.4.1,但我也将其更新为6.5.0。我尝试在两台计算机上的项目中都运行npm install,但是仍然发现一台计算机始终删除^,而另一台计算机始终添加^

请让我知道我是否缺少什么。感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

在将{em> package.json 和 package-lock.json 修订后的{em}和 package-lock.json 放入计算机后,请尝试删除 node_modules 目录在再次安装软件包之前。

例如:

  1. 首先git pull到计算机2上的项目目录。

  2. 运行以下命令删除现有的 node_modules 目录:cd

  3. 然后运行:rm -rf node_modules

或者您可以使用npm install运算符将上述两个命令链接起来:

&&