npm包管理工具

devtools/2025/2/14 1:25:02/

包管理工具

npm__1">npm 包管理工具

介绍

  • Node Package Manager:也就是Node包管理工具
  • 但是目前已经不仅仅是Node包管理器,在前端项目中我们也使用它来管理依赖的包
  • 比如 vue、vue-router、vuex、express、koa

下载和安装

  • npm属于Node的管理工具,安装Node的过程中会自动安装npm工具

package配置文件

  • 必填属性
{// 项目的名称"name":"",// 当前项目的版本号"version":"",// 描述信息"description":"",// 作者相关信息"author":"",// 开源协议"license":""
}
  • private属性:
    • private 是记录当前的项目是否是私有的
    • 当值为true时,npm是不能发布它的,这是防止私有项目或者模块化发布出去的方式
  • main 属性:
    • 设置程序的入口
    • 比如我们使用 axios模块,const axios = require(“axios”)
    • 如果有main属性,实际上是找到对应的main属性查找文件的
  • scripts属性
    • 用于配置一些脚本命令
    • 配置后我们可以通过 npm run 命令的key来执行这个命令
    • 对于常用的start、test、stop、restart可以省略run直接通过npm start 等方式运行
  • dependencies属性
    • dependencies 属性是指定无论开发环境还是生成环境都需要依赖的包
    • 通常是我们项目实际开发用到的一些库模块vue、vuex、vue-router、react、react-dom等等
  • devDependencies
    • 一些包在生产环境是不需要的,比如webpack、babel等
    • npm install webpack --save-dev,将他安装到devDependencies属性中
  • peerDependencies属性
    • 还有一种项目依赖关系是对等依赖,也就是你依赖的一个包,它必须是另外一个宿主包为前提得
    • 比如 element-plus 是依赖vue3 的
  • 依赖管理
    • 安装的依赖版本出现:^2.0.3或者~2.0.3
    • npm的包通常需要遵从semver版本规范
      • semver:https://semver.org/lang/zh-CN/
      • npm semver:https://docs.npmjs.com/misc/semver
    • semver 版本规范 X.Y.Z
      • X主版本号(major):当你做了不兼容的API修改(可能不兼容之前的版本)
      • Y次版本号(minor):当你做了向下兼容的功能性新增(新功能增加,但是兼容之前的版本)
      • Z修订号(patch):当你做了向下兼容的问题修正(没有新功能,修复了之前版本的bug)
  • ^ 和 ~ 的区别
    • x.y.z:表示一个明确的版本号
    • ^x.y.z:表示x保持不变,y和z永远安装最新的版本
    • ~x.y.z:表示x和y保持不变,z永远安装最新的版本
  • engines 属性
    • engines 属性用于指定Node和NPM的版本号
    • 在安装过程中,会先检查对应的引擎版本,如果不符合就会报错
    • 事实上也可以指定所在的操作系统 "os”:[“darwin”,“linux”],只是很少用到
  • browserlist属性
    • 用于配置打包后的JavaScript浏览器的兼容情况
    • 否则我们需要手动添加polyfills来支持某些语法
    • 它是为webpack等打包工具付服务的一个属性
  • 补充
    • 全局安装依赖,会在电脑环境变量中自动添加
npm install webpack -g

会安装到指定目录下
查看安装目录

npm root -g
  • 全局安装是直接将某个包安装到全局
  • 比如全局安装yarn

npm_install__78">npm install 原理

在这里插入图片描述

  • npm install 会检测是有package-lock.json文件
    • 没有lock文件
      • 分析依赖关系,可能包会依赖其他的包,并且多个包之间会产生相同的依赖情况;
      • 从registry仓库中下载压缩包(如果我们设置了镜像,那么会从镜像服务器下载压缩包);
      • 获取到压缩包后会对压缩包进行缓存(从npm5开始有的);
      • 将压缩包解压到项目的node_modules文件夹中
    • 有lock文件
      • 检测lock包的版本是否和package.json中一致(会按照semver版本规则检测);
      • 不一致:会重新构建依赖关系,直接走顶层的流程
      • 一致:会优先查找缓存,如果没有找缓存会从registry仓库下载,如果找到会取缓存中的压缩文件,并且压缩文件解压到node_modules文件夹中
  • 常用命令
    • 卸载:npm uninstall
    • 强制重新build:npm rebuild
    • 清楚缓存:npm clear cash

http://www.ppmy.cn/devtools/158638.html

相关文章

【Apache Paimon】-- 作为一名小白,如何系统地学习 Apache paimon?

目录 一、整体规划 1. 了解基本概念与背景 2. 学习资料的选择 3. 学习路径与规划 4. 学习建议 5. 注意事项 6. 参考学习资料 二、详细计划 阶段 1:了解基础(1-2 周) 阶段 2:深入掌握核心功能(3-4 周&#xf…

【DeepSeek】在本地计算机上部署DeepSeek-R1大模型实战(完整版)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能(AI)通过算法模拟人类智能,利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络(如ChatGPT&…

springboot的http请求不通原因

Spring Boot 应用中 HTTP 请求不通可能由多种原因引起,以下是一些常见问题及解决方法: 1. 端口冲突 问题:应用端口被占用。 解决:检查端口占用情况,修改 application.properties 或 application.yml 中的端口配置。 …

ADB的安装和使用

文章目录 前言一、ADB是什么?一、ADB的基本概念二、ADB的主要功能三、ADB在Linux系统中的安装与使用四、ADB命令的示例 二、windows 安装ADB1.ADB不用安装,解压文件后添加环境变量即可2.测试是否能使用 三、与linux通信3.1 将 usb设备连接到虚拟机3.2.测…

PDF密码忘了?三步找回超简单

想要轻松解决文件密码问题?推荐一个优质选择—— 文件密码.top 网站。 先打开手机或电脑浏览器,输入 文件密码.top ,然后找到“立即开始”。点击之后,就能上传你的PDF、Word、Excel、PPT、RAR或ZIP文件了。这个网站能安全高效地帮…

html文件怎么转换成pdf文件,2025最新教程

将HTML文件转换成PDF文件,可以采取以下几种方法: 一、使用浏览器内置功能 打开HTML文件:在Chrome、Firefox、IE等浏览器中打开需要转换的HTML文件。打印对话框:按下CtrlP(Windows)或CommandP(M…

IntelliJ IDEA使用经验(十三):使用Git克隆github的开源项目

文章目录 问题背景办法1、设置git代理;2、再次克隆项目;3、再次按常规方式进行git克隆即可。 问题背景 由于github在国外,很多时候我们在使用idea克隆开源项目的时候,没办法检出,提示 连接重置。 办法 1、设置git代…

机器学习-智能写作助手

以下为你介绍两种不同方式实现智能写作助手的代码示例,一种是基于简单的机器学习模型(循环神经网络,这里使用 LSTM),另一种是调用 OpenAI 的 GPT 接口实现更强大的智能写作功能。 方式一:基于 LSTM 的简单…