【Node】npm 的使用


安装 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 标志来查看预期的结果,而不进行实际操作。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JS.Huang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值