npm 相关内容

478 阅读3分钟

npm相关网站

官网真的资料很全呐

周知

首先周知老 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…

image.png

一般我们使用nvm切换node版本时,npm也会切换到与node匹配的版本。例如,我当前切换到18.7.0版本,对应的npm版本是8.15.0。

image.png

image.png

npm 警告

当我们运行npm -v或者其他相关的npm命令时,会遇到npm的警告如下

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.

image.png

我目前切换node为16.16.0。 比对npm与node的版本匹配关系,npm版本应该是8.11.0,发现是能匹配上的,所以不是网上很多人说的node和npm版本不匹配导致的。

image.png

这个出现的原因是

原因

不同版本里的配置的config命令描述和不赞同的描述都不一样。 出现的原因的,npm的global命令里的deprecated属性(deprecated译为:不赞同,强烈反对)

image.png

解决办法

上面已经说明原因了 我们找到对应的配置描述文件路径,目前我的是在

D:\nvm\v16.16.0\node_modules\npm\lib\utils\config\definitions.js

大家找到对应的目录路径 image.png 然后修改对应的出现warning的提示,目前

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.

是指明了config的global。所以是修改global里的deprecated属性。我是把它设置为空。

image.png

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 相关的命令可以看到,提示去除了。

image.png

题外话

出现这个是正常的,无需要理会。要是你觉得是强迫症的话,那你可以把这个不赞同的描述description置空。 我不建议按网上的方法修改cpm的一些命令运行文件,这个会引发不必要的错误。也不建议升级npm版本,因为这个warning提示只是属于npm的一个不建议或不赞同的描述。仅仅因为一个描述而去升级npm版本导致node与npm对应不上或者修改命令运行文件导致npm运行时崩溃。

遇到类似的warning或者error。我们可以按照这样的排查方法

第一步:先看node_cache缓存文件,里边记录了命令运行的过程

image.png

image.png

第二步: 根据报错或警告追溯文件,而后追根溯源

image.png

i don't know,怎么办?

如果以上都没有查到,其实最简单就是,打开一个编辑器,我是打开vscode编辑器,把报错或者警告的相关描述全局查 ,一定要知道是做什么用的,不要盲目去修改源文件。

image.png

疑问:这样改会不会导致问题?

放心的是,我们只是改了这个描述,你可以对比目前最新的npm8.15.1版本的,里边的其实都没有deprecated属性。

image.png

npmrc

后续有时间会出相关的npmrc配置相关的。但是我计划把相关的配置整理成一个专栏,主要为前端架构师去构建项目时提供指引和参考。期待着先吧~