【包管理工具】npm

本文介绍了npm,它是Node.js的包管理工具,可用于安装、管理和分享JavaScript代码包。涵盖了React等框架依赖管理、开发与测试工具使用。还讲解了npm脚本、必备命令、版本管理、package.json文件、依赖问题处理及发布包等内容,能助力开发者高效使用npm。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

简介

使用


简介

npm(Node Package Manager)

Node.js的包管理工具,用于安装、管理和分享 JavaScript 代码包(libraries、frameworks、tools 等)。

  • React、Vue、Angular 等框架的依赖管理。
  • 开发工具如 Webpack、Babel、ESLint
  • 测试工具如 Jest、Mocha
  • CI/CD 工具如 Husky、lint-staged。CI/CD 工具(Continuous Integration/Continuous Deployment/Delivery 工具)用于实现软件开发的自动化构建、测试、部署流程,可以大幅提高开发效率、代码质量和交付速度。

它附带在 Node.js 安装包中。

从 https://www.npmjs.com/ 网站上搜索自己所需要的包  

从 https://registry.npmjs.org/  服务器上下载自己需要的包

npm -v 
npm i package_name
#默认情况下,使安装包的时候,会自动安装最新版本的包。

#如果需要安装指定版本的包,可以在包名之后,通过 @ 符号指定具体的版本
npm i moment@2.22.2

npm i #一次性安装所有依赖包

npm uninstall package_name

运行 npm install 命令安装包的时候,npm 包管理工具会自动把包的名称和版本号,记录到 package.json 的dependencies中。 

初次装包完成后,在项目文件夹下多一个叫做 node_modules 的文件夹和 package-lock.json 的配置文件。 其中: node_modules 文件夹用来存放所有已安装到项目中的包。require() 导入第三方包时,就是从这个目录中查找并加载包。 package-lock.json 配置文件用来记录 node_modules 目录下的每一个包的下载信息,例如包的名字、版本号、下载地址等。

注意:程序员不要手动修改 node_modules 或 package-lock.json 文件中的任何代码,npm 包管理工具会自动维护它们。

  • npm包可以分成项目包、全局包

那些被安装到项目的 node_modules 目录中的包,都是项目包。

项目包又分为两类,分别是:开发依赖包(被记录到 devDependencies 节点中的包,只在开发期间会用到),核心依赖包(被记录到 dependencies 节点中的包,在开发期间和项目上线之后都会用到)

命令-g则安装为全局包 卸载也需要添加-g,只有工具性质的包,才有全局安装的必要性。

  • 包管理配置文件

npm 规定,在项目根目录中,必须提供一个叫做 package.json 的包管理配置文件。用来记录与项目有关的一些配置信息。例如: 项目的名称、版本号、描述等 项目中都用到了哪些包 哪些包只在开发期间会用到 哪些包在开发和部署时都需要用到。从而方便剔除 node_modules 目录之后,在团队成员之间共享项目。 注意:今后在项目开发中,一定要把 node_modules 文件夹,添加到 .gitignore 忽略文件中。

npm init -y //快速创建package.json

项目文件夹的名称一定要使用英文命名,不要使用中文,不能出现空格。

  • devDependencies 节点

如果某些包只在项目开发阶段会用到,在项目上线之后不会用到,则建议把这些包记录到 devDependencies 节点中。 与之对应的,如果某些包在开发和项目上线之后都需要用到,则建议把这些包记录到 dependencies 节点中。

npm i package_name -D #记录到devDependencies节点中
npm install package_name --save-dev
  •  国内npm镜像服务器

镜像(Mirroring)是一种文件存储形式,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。

npm config get registry #查看当前镜像源

npm config set registry=https://registry.npm.taobao.org/#淘宝源

npm config get registry #检查镜像源是否下载成功
  •  nrm
npm i nrm -g #全局安装
nrm ls #查看可用镜像源
nrm use taobao #切换为taobao镜像
  •  规范的包结构

一个规范的包,它的组成结构,必须符合以下 3 点要求: 包必须以单独的目录而存在,包的顶级目录下要必须包含 package.json 这个包管理配置文件,package.json 中必须包含 name,version,main 这三个属性,分别代表包的名字、版本号、包的入口。

包的语义化版本规范

包的版本号是以“点分十进制”形式进行定义的,总共有三位数字,例如 2.24.0 其中每一位数字所代表的的含义如下:

第1位数字:大版本

第2位数字:功能版本

第3位数字:Bug修复版本

版本号提升的规则:只要前面的版本号增长了,则后面的版本号归零。

使用

- 安装

conda install nodejs

安装后会生成node_modules,package-lock.json


1、什么是 npm 脚本scripts?

npm 允许在package.json文件里面,使用scripts字段定义脚本命令。

注意添加keywords

  "scripts": {
    "build": "node build.js"
  }
}

上面代码是package.json文件的一个片段,里面的scripts字段是一个对象。它的每一个属性,对应一段脚本。比如,build命令对应的脚本是node build.js。 

 命令行下使用npm run命令,就可以执行这段脚本。每次版本更新时如果源码变了一定要执行这个代码,否则npm包代码不会更新。

$ npm run build
# 等同于执行
$ node build.js

2. 必备命令

npm install <package-name>
npm install -g <package-name> #全局安装
npm uninstall <package-name>
npm list
npm update <package-name>

npm init#初始化创建package.json文件
npm init -y#快速初始化(跳过所有交互)
npm run <script-name>#运行脚本 在 package.json 中定义的脚本
npm cache clean --force#清理缓存
npm audit fix#修复依赖问题

3.版本管理

  • 版本号格式

    • 语义化版本号(Semantic Versioning)格式:major.minor.patch,例如 1.2.3
      • major(主版本号): 重大变更,不向后兼容。
      • minor(次版本号): 新功能,向后兼容。
      • patch(补丁版本号): Bug 修复,向后兼容。
  • 符号含义

    • ^1.2.3: 接受 1.x.x 的版本,但不超过 2.0.0
    • ~1.2.3: 接受 1.2.x 的版本,但不超过 1.3.0
    • 1.2.3: 固定版本

4. package.json文件

核心字段:

  • dependencies 项目的运行时依赖。
  • devDependencies 开发时需要的工具和库(如测试框架)。
  • scripts 定义自定义命令脚本。
  • engines 指定支持的 Node.js 版本。
{
  "name": "my-app",
  "version": "1.0.0",
  "scripts": {
    "start": "node index.js",
    "test": "jest"
  },
  "dependencies": {
    "express": "^4.17.1"
  },
  "devDependencies": {
    "jest": "^29.2.1"
  }
}

5. 依赖问题

  • 删除并重新安装依赖

  • rm -rf node_modules package-lock.json

  • npm install

  • 查看依赖冲突

    npm ls <package-name> 
  • 修复漏洞

    npm audit fix

6.常见工具

- npx

用于运行 npm 包而无需全局安装

npx create-react-app my-app

npm-check-updates

更新依赖到最新版本

npx npm-check-updates -u
npm install

7. 发布包

npm login#登陆npm
#配置keywords .npmignore .gitignore
npm run #跑通同步一下
npm publish#发布包
npm unpublish package --force #删除已发布的包

更新包: npm run (build) ->确保版本号已更新,然后重新发布。

- 使用 .npmrc 文件设置全局配置

save-exact=true # 保存固定版本号
registry=https://registry.npmjs.org/ # 指定仓库地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

七灵微

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

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

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

打赏作者

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

抵扣说明:

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

余额充值