npm(Node Package Manager) 学习记录

一、npm 是什么

npm 是 Node.js 包管理器。是一个命令行工具,用于安装和管理 Node.js 项目中的代码库和工具。
npm 允许从 npm 注册表(一个大型的软件包数据库)中搜索、安装、更新和删除软件包,并处理这些软件包的依赖关系。
npm 已经成为 Node.js 生态系统中不可或缺的一部分,通过 npm, 可以快速地构建、扩展和维护复杂的 Node.js 应用程序。

二、npm 主要功能

1、包管理

npm 可以方便地安装、更新和删除 Node.js 软件包。这些软件包可以是库、框架、工具或者任何其他的 Node.js 代码。

2、依赖管理

npm 能够处理项目中的依赖关系。通过在项目的 package.json 文件中列出所需的依赖及其版本,npm 可以确保在不同的环境中安装正确的版本的依赖

3、脚本执行

npm 允许定义和执行自定义脚本,这些脚本可以在项目的声明周期中的不同阶段(安装、测试、构建等)自动运行

4、发布包

开发者可以使用 npm 发布自己的软件包到 npm 注册表中,供他人使用

5、npm 注册表

npm 注册表是一个全球性的在线存储库,其中包含数以万计的软件包。可以通过 npm 搜索这些软件包,并安装到本地项目中。

三、npm 中文网 和 npm 官网

https://npm.nodejs.cn/about-npm
http://www.npmjs.com
https://www.npmjs.cn

四、npm 安装

安装 Node.js 后,npm将同步一起安装。
在 https://nodejs.cn/download/ 下载对应系统对应版本的安装

(不同的 node 版本,可以使用 nvm 来管理安装与切换)

通过命令 node -vnpm -v 来验证是否安装成功

是否安装成功

五、npm 常用操作

1、初始化一个新的项目 npm init / npm init -y

主要用于初始化一个新项目并快速生成一个 package.json 文件

npm init -y
  • 创建 package.json 文件: 在命令行当前目录中创建一个 package.json 文件。这个文件是 Node.js 项目的核心文件,用于储存项目的元数据,如项目名称、版本号、描述、入口点、脚本命令和依赖等。
  • 使用默认值填充 package.json 文件:因为使用了 -y/-yes 选项, npm init 命令会使用默认值来填充 package.json 文件中的各个字段,而不需要手动逐行填写。默认项目名称为当前目录名称,版本号默认为1.0.0,描述为空字符串。
  • 设置入口点:package.json 文件中的 main 字段通常设置为项目的入口点,默认设置为 index.js,可以修改这个值。
  • 生成其他字段:package.json 文件中还包含其他字段,如 script 字段,用于定义自定义脚本命令,dependencies 字段,用于列出项目的依赖项等。

2、安装一个依赖包 npm i XXX / npm install XXX

npm i vue
  • 安装依赖包:该命令会从 npm 注册表中下载并安装名为 vue 的包及其所有依赖项。这些依赖项通常是其他 Node.js 包,被 vue 包用作其正常工作的基础。
  • 本地安装: 会在当前项目的 node_modules 文件夹中创建 vue 包的本地副本。没有使用 -g 选项,该包仅对该项目可用。
  • 更新 package.json:如果使用 --save 或者 --save-dev 参数,npm 会自动更新项目中的 package.json 文件。会在 dependencies(生产依赖)和 devDependencies(开发依赖)字段中添加 vue 包及其版本号。这样,其他开发者或未来的构建过程可通过 package.json 文件并运行 npm install 来安装所有必要的依赖项。
  • 管理依赖关系:npm 能够处理复杂的依赖关系,确保安装正确的版本的包,并解决可能存在的版本冲突。
  • 执行安装脚本: 如果 XXX 包在其 package.json 文件中定义了安装脚本(如 preinstall、install 或者 postinstall),那么 npm 在安装过程中会执行这些脚本。这些脚本可能用于编译源代码、配置环境变量或执行其他安装后任务。

3、安装项目的所有依赖项 npm i / npm install

npm install

npm 会查看当前目录下的 package.json 文件,并安装该文件 dependenciesdevDependencies 字段中列出的所有依赖项,这些依赖项会被安装到项目的 node_modules 文件夹中。

4、更新依赖项 npm update xxx

用于更新项目中指定的包 xxx 到其最新版本

npm update xxx

5、删除依赖项 npm uninstall xxx

用于删除项目中指定的包 xxx

npm uninstall xxx
  • 查找并删除包:npm 会在项目的 node_modules 文件夹中查找名为 XXX 的包,并将其删除。
  • 更新 package.json:npm 会从 package.json 文件中的 dependencies 或者 devDependencies 列表中删除 XXX 包的条目。
  • 删除依赖关系:如果其他包依赖于 XXX 包,npm 会尝试更新这些包的依赖关系以反映 XXX 包的删除。
  • 更新 package-lock.json:如果有一个 package-lock.json 文件(这个文件通常会在运行 npm install 时生成,用于锁定依赖项的版本),npm 会更新这个文件以反映 XXX 包的删除。
  • 执行卸载脚本:如果 xxx 包含了任何卸载脚本(虽然这在实践中并不常见),npm 会在删除包之前尝试执行这些脚本。

相关推荐

  1. 学习记录————

    2024-04-10 00:18:01       66 阅读
  2. mysql学习记录

    2024-04-10 00:18:01       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-10 00:18:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-10 00:18:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-10 00:18:01       87 阅读
  4. Python语言-面向对象

    2024-04-10 00:18:01       96 阅读

热门阅读

  1. Leetcode面试经典150_Q169多数元素

    2024-04-10 00:18:01       37 阅读
  2. vivado 设计调试

    2024-04-10 00:18:01       34 阅读
  3. linux下python服务定时(自)启动

    2024-04-10 00:18:01       32 阅读
  4. C++基础——结构体与类

    2024-04-10 00:18:01       36 阅读
  5. GIT泄露

    GIT泄露

    2024-04-10 00:18:01      34 阅读
  6. 广义表的学习

    2024-04-10 00:18:01       29 阅读
  7. M2 Pro安装 huggingface transformer

    2024-04-10 00:18:01       38 阅读
  8. Leetcode面试经典150_Q189轮转数组

    2024-04-10 00:18:01       35 阅读
  9. LeetCode|501. Find Mode in Binary Search Tree

    2024-04-10 00:18:01       26 阅读
  10. 爬虫之数据神器10---Peewee实现ORM的核心原理

    2024-04-10 00:18:01       30 阅读
  11. Day32 线程安全二

    2024-04-10 00:18:01       35 阅读