我有一个项目要与两台不同的笔记本电脑一起使用。有时,我会在项目中添加额外的软件包,因此必须使用npm install <package-name>
(duh)。当我这样做时,我git push
打开新的package.json
和package-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
,但是仍然发现一台计算机始终删除^
,而另一台计算机始终添加^
。
请让我知道我是否缺少什么。感谢您的帮助!
答案 0 :(得分:1)
在将{em> package.json 和 package-lock.json 修订后的{em}和 package-lock.json 放入计算机后,请尝试删除 node_modules 目录在再次安装软件包之前。
例如:
首先git pull
到计算机2上的项目目录。
运行以下命令删除现有的 node_modules 目录:cd
。
然后运行:rm -rf node_modules
或者您可以使用npm install
运算符将上述两个命令链接起来:
&&