npm相关网站
- npm官网(英文):docs.npmjs.com/
- npm中文网(其实也没翻译多少):www.npmjs.cn/
- npm中国镜像站:npmmirror.com/
官网真的资料很全呐
周知
首先周知老 npm.taobao.org 和 registry.npm.taobao.org 域名将于 2022 年 05 月 31 日零时起停止服务,原文详见知乎【望周知】淘宝 NPM 镜像站喊你切换新域名啦
npm查看配置常用命令
查看当前npm包的全局安装路径
npm prefix -g
查看当前npm包的全局cache路径
npm config get cache
查看配置列表
npm config ls
查看配置列表的全部信息
npm config ls -l
nodejs与npm 的对应版本
可以直接查看官网的:nodejs.org/zh-cn/downl…
一般我们使用nvm切换node版本时,npm也会切换到与node匹配的版本。例如,我当前切换到18.7.0版本,对应的npm版本是8.15.0。
npm 警告
当我们运行npm -v或者其他相关的npm命令时,会遇到npm的警告如下
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
我目前切换node为16.16.0。 比对npm与node的版本匹配关系,npm版本应该是8.11.0,发现是能匹配上的,所以不是网上很多人说的node和npm版本不匹配导致的。
这个出现的原因是
原因
不同版本里的配置的config命令描述和不赞同的描述都不一样。
出现的原因的,npm的global命令里的deprecated属性(deprecated译为:不赞同,强烈反对)
解决办法
上面已经说明原因了 我们找到对应的配置描述文件路径,目前我的是在
D:\nvm\v16.16.0\node_modules\npm\lib\utils\config\definitions.js
大家找到对应的目录路径
然后修改对应的出现warning的提示,目前
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
是指明了config的global。所以是修改global
里的deprecated
属性。我是把它设置为空。
define('global', {
default: false,
type: Boolean,
short: 'g',
deprecated: ``,
// deprecated: `
// \`--global\`, \`--local\` are deprecated. Use \`--location=global\` instead.
// `,
description: `
Operates in "global" mode, so that packages are installed into the
\`prefix\` folder instead of the current working directory. See
[folders](/configuring-npm/folders) for more on the differences in
behavior.
* packages are installed into the \`{prefix}/lib/node_modules\` folder,
instead of the current working directory.
* bin files are linked to \`{prefix}/bin\`
* man pages are linked to \`{prefix}/share/man\`
`,
flatten: (key, obj, flatOptions) => {
flatten(key, obj, flatOptions)
if (flatOptions.global) {
flatOptions.location = 'global'
}
},
})
测试
重新运行命令npm 相关的命令可以看到,提示去除了。
题外话
出现这个是正常的,无需要理会。要是你觉得是强迫症的话,那你可以把这个不赞同的描述description
置空。
我不建议按网上的方法修改cpm的一些命令运行文件,这个会引发不必要的错误。也不建议升级npm版本,因为这个warning提示只是属于npm的一个不建议或不赞同的描述。仅仅因为一个描述而去升级npm版本导致node与npm对应不上或者修改命令运行文件导致npm运行时崩溃。
遇到类似的warning或者error。我们可以按照这样的排查方法
第一步:先看node_cache缓存文件,里边记录了命令运行的过程
第二步: 根据报错或警告追溯文件,而后追根溯源
i don't know,怎么办?
如果以上都没有查到,其实最简单就是,打开一个编辑器,我是打开vscode编辑器,把报错或者警告的相关描述全局查 ,一定要知道是做什么用的,不要盲目去修改源文件。
疑问:这样改会不会导致问题?
放心的是,我们只是改了这个描述,你可以对比目前最新的npm8.15.1版本的,里边的其实都没有deprecated属性。
npmrc
后续有时间会出相关的npmrc配置相关的。但是我计划把相关的配置整理成一个专栏,主要为前端架构师去构建项目时提供指引和参考。期待着先吧~