【Node】npm 的使用

  • Post author:
  • Post category:其他



安装 Node 的时候,会一并安装好 npm。

可以在命令行执行

npm -v

查看 npm 的版本。



配置 npm


  1. npm config ls

    :查看 npm 的配置信息;为

    npm config list

    的简写


    npm config ls -l

    :查看 npm 的详细配置信息

  2. npm config get <配置项名称>

    :查看 npm 指定配置项的信息

    eg:

    npm config get registry

    – 查看 npm 的镜像源、

    npm config get prefix

    – 查看 npm 全局依赖包的安装地址

  3. npm config set <配置项名称> <值>

    :设置 npm 的指定配置项

    eg:

    npm config set registry https://registry.npmmirror.com/

    – 设置 npm 的镜像源为 “淘宝镜像”



常用功能



初始化配置文件

可以执行

npm init

命令行初始化 package.json 文件,需要手动配置基础信息。

也可以执行

npm init -y

命令行初始化 package.json 文件,能自动配置好基础信息。



管理依赖包


  1. npm i <包名>

    :安装依赖包;为

    npm install <包名>

    的简写


    npm i <包名> -g

    :安装全局依赖包


    npm i

    :安装当前项目需要的所有依赖包


    npm i <包名> -D

    :安装仅开发环境下使用的依赖包


    npm i <包名>@x.x.x

    :安装指定版本的依赖包

  2. npm un <包名>

    :卸载指定依赖包;为

    npm uninstall <包名>

    的简写


    npm un <包名> -g

    :卸载全局依赖包

  3. npm up <包名>

    :更新指定依赖包;为

    npm update <包名>

    的简写


    npm up <包名> -g

    :更新全局依赖包


    npm up

    :更新当前项目正使用的所有依赖包

  4. npm outdated

    :查看过时的依赖包

如果不确定当前依赖包应该被安装到什么环境下(全局安装 / 安装到生产环境 / 安装到开发环境),可以到 npm 官网 / 依赖包的官网查看一下



查看依赖包的信息


  1. npm ls

    :查看当前项目已安装的依赖包;为

    npm list

    的简写


    npm ls -g

    :查看已安装的全局依赖包


    npm ls --depth=0

    :限制查看的深度

  2. npm v <包名>

    :查看指定依赖包在远程仓库上的信息;为

    npm view <包名>

    的简写


    npm v <包名> version

    :查看指定包在远程仓库上的最新版本


    npm v <包名> versions

    :查看指定包在远程仓库上的所有版本



执行脚本

package.json 可以配置

scripts

字段,用来定义一些脚本任务

  1. 查看所有脚本任务:

    npm run
  2. 执行指定脚本任务:

    npm run <脚本任务名>
{
    // ...
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
    },
}



nrm(npm 镜像源管理器)

nrm (npm registry manager),npm 镜像源管理器。可以使用 nrm 更方便地查看、测试、切换镜像源。

  1. 全局安装 nrm:

    npm i nrm -g
  2. 查看所有镜像源:

    nrm ls
> nrm ls
* npm ---------- https://registry.npmjs.org/
  yarn --------- https://registry.yarnpkg.com/
  tencent ------ https://mirrors.cloud.tencent.com/npm/
  cnpm --------- https://r.cnpmjs.org/
  taobao ------- https://registry.npmmirror.com/
  npmMirror ---- https://skimdb.npmjs.com/registry/
  1. 镜像源测速:

    nrm test
> nrm test
* npm ------ 1023ms
  yarn ----- 1020ms
  tencent -- 1523ms
  cnpm ----- 453ms
  taobao --- 445ms
  npmMirror - 934ms
  1. 使用指定镜像源:

    nrm use <镜像源名称>
> nrm use taobao
  Registry has been set to: https://registry.npmmirror.com/
  1. 添加自定义镜像源:

    nrm add <自定义镜像源名称> <自定义镜像源地址>

  2. 删除镜像源:

    nrm del <镜像源名称>



开发自己的依赖包



编写包

  1. 创建 sum-tool 目录,作为项目的根目录

  2. 在根目录下创建如下 3 个文件:

    1. package.json – 用来描述包的元数据文件
    2. index.js – 包的入口文件
    3. README.md – 包的说明文档
  3. 编写 package.json:

{
    "name": "sum-tool", // 包名, 不能与其他包名相同
    "version": "1.0.0", // 版本号
    "description": "这里是对包的一些个描述信息",
    "main": "index.js", // 入口文件
    "keywords": ["math", "sum"], // 搜索关键字
    "author": "superman", // 作者
    "license": "ISC", // 许可协议,默认为 "ISC"
}
  1. 编写 index.js:
export default (a, b) => a + b;
  1. 编写 README.md,只要能清晰地说明包的功能、用法、注意事项即可



发布包

  1. 到 npm 官网注册 npm 账号
  2. 在终端登陆 npm 账号:

    npm login


    注意:在运行 npm login 之前需要先把 npm 镜像源切换回 npm 的官方服务器,否则无法成功登录
  3. 在项目的根目录下执行

    npm publish

    即可将项目发布到 npm 上



删除包

  1. 在终端登录 npm 账号:

    npm login


    注意:在运行 npm login 之前需要先把 npm 镜像源切换回 npm 的官方服务器,否则无法成功登录
  2. 执行

    npm unpublish <包名> -f

    即可删除已发布的 npm 包

    注意:① 只能删除 72 小时内发布的包、② 在 24 小时内不能重新发布被删除的包



其他实用功能



锁定依赖包版本

默认情况下,npm 安装依赖后,其版本号会显示为如下形式:

{
    "devDependencies": {
        "lodash": "^4.17.21",
        "webpack": "^5.87.0",
        "webpack-cli": "^5.1.4"
    }
}

符号

^

表示只允许小版本的升级。

我们可以执行命令

npm config set save-prefix='~'

,再安装依赖可以发现

^

变成了

~

表示只允许补丁包的升级

还可以执行命令

npm config set save-exact true

,再安装的依赖就会被锁定版本号

还可以在安装或更新依赖包后执行命令

npm shrinkwrap

来锁定项目的依赖包版本。

它会根据 node_modules 中的实际安装情况生成 npm-shrinkwrap.json,以记录每个依赖包的确切版本和来源。

npm-shrinkwrap.json 文件会优先于 package-lock.json,在执行

npm i

时被使用。

注意:

npm shrinkwrap

只会锁定项目的直接依赖包,而不会锁定子依赖包。如果你想锁定所有的依赖包,你可以使用

--lockfile-version 2

标志,来生成一个兼容 npm v7 的 npm-shrinkwrap.json 文件。

npm shrinkwrap 命令只适用于发布到 npm 镜像源的项目,如果你只是在本地开发,你不需要使用这个命令。package-lock.json 文件已经足够保证你的本地开发环境的一致性



安装可靠的依赖包

可以使用

npm ci

命令来安装项目的依赖包,它会根据 package-lock.json 或者 npm-shrinkwrap.json 中的确切版本和来源来安装依赖包

使用该命令时需要注意:

  • 项目必须存在的 package-lock.json 或 npm-shrinkwrap.json;如果没有,

    npm ci

    将不起作用。
  • 如果锁文件中的依赖包和 package.json 中的依赖包不匹配,

    npm ci

    会退出并报错,而不会更新锁文件。

  • npm ci

    只能安装整个项目的依赖包,不能添加单个的依赖包。
  • 如果文件夹 node_modules 已存在,它会在

    npm ci

    开始安装之前自动删除它。

  • npm ci

    通常会比

    npm i

    快很多,因为它跳过了一些面向用户的特性,比如检查版本范围、生成锁文件、修改 package.json 等。



删除重复的依赖包

可以使用

npm dedupe

命令来消除 node_modules 目录中重复的依赖包。


npm dedupe

会遍历依赖树,将每个依赖包尽可能地移到最高的层级,这样可以让多个依赖包更有效地共享同一个依赖包。

这样可以生成一个即扁平又去重的依赖树。


npm dedupe

可以使用

--dry-run



--json

标志来查看预期的结果,而不进行实际操作。



版权声明:本文为Superman_H原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。