当前位置: 首页 > news >正文

深入了解 npm:Node.js 包管理工具详解

文章目录

    • 一、npm 基本概念
      • 1.1 什么是 npm?
      • 1.2 package.json 文件
    • 二、npm 常用命令
      • 2.1 初始化项目
      • 2.2 安装依赖
        • 2.2.1 安装单个包
        • 2.2.2 全局安装包
        • 2.2.3 安装开发依赖
      • 2.3 移除依赖
      • 2.4 更新依赖
      • 2.5 查看已安装的包
      • 2.6 发布包
    • 三、npm 高级用法
      • 3.1 使用 npm scripts
      • 3.2 使用 npx 运行包
      • 3.3 使用 npm 版本管理
      • 3.4 使用私有 npm 仓库
      • 3.5 使用 npm Hook
    • 四、常见问题与解决方案
      • 4.1 依赖冲突
      • 4.2 npm 缓存问题
      • 4.3 权限问题
    • 五、总结

在这里插入图片描述

🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量


  • ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹
  • ✨博客主页:IT·陈寒的博客
  • 🎈该系列文章专栏:Java学习路线
  • 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习
  • 🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • 📜 欢迎大家关注! ❤️

npm(Node Package Manager)是 Node.js 的包管理工具,也是全球最大的 JavaScript 包管理生态系统。它是每个 Node.js 开发者的必备工具,不仅可以用来管理项目中的依赖包,还可以用于发布和管理自己的 JavaScript 库。本文将详细介绍 npm 的基本概念、常用命令以及如何使用 npm 高效地管理项目。
在这里插入图片描述

一、npm 基本概念

1.1 什么是 npm?

npm 是一个包管理工具,主要功能包括:

  • 安装第三方包:从 npm 官方库下载并安装第三方包。
  • 管理依赖包:管理项目中的依赖包,包括添加、删除、更新等操作。
  • 发布自己的包:将自己的库发布到 npm 官方库,供其他开发者使用。

1.2 package.json 文件

package.json 是 npm 项目的核心文件,包含了项目的基本信息、依赖包信息、脚本等内容。一个典型的 package.json 文件如下:

{"name": "my-project","version": "1.0.0","description": "A sample project","main": "index.js","scripts": {"start": "node index.js","test": "echo \"Error: no test specified\" && exit 1"},"author": "Your Name","license": "ISC","dependencies": {"express": "^4.17.1"},"devDependencies": {"nodemon": "^2.0.7"}
}

二、npm 常用命令

2.1 初始化项目

在创建新的 npm 项目时,首先需要生成 package.json 文件。可以使用 npm init 命令:

npm init

这会启动一个交互式的问答过程,帮助你生成 package.json 文件。你也可以使用 -y 参数跳过所有提问,生成默认配置的 package.json 文件:

npm init -y

2.2 安装依赖

2.2.1 安装单个包

使用 npm install 或者 npm i 命令来安装依赖包:

npm install express
2.2.2 全局安装包

有些工具包需要全局安装,可以使用 -g 参数:

npm install -g nodemon
2.2.3 安装开发依赖

开发依赖(devDependencies)是仅在开发环境中需要的包,可以使用 --save-dev-D 参数:

npm install --save-dev jest

2.3 移除依赖

使用 npm uninstall 命令来移除不需要的依赖包:

npm uninstall express

2.4 更新依赖

使用 npm update 命令可以更新项目中的依赖包:

npm update

2.5 查看已安装的包

使用 npm list 命令可以查看当前项目中已安装的所有包:

npm list

2.6 发布包

使用 npm publish 命令可以将自己的包发布到 npm 官方库。首先,需要在项目根目录下创建一个 .npmignore 文件,类似于 .gitignore,用于指定哪些文件不需要被发布。

npm publish

三、npm 高级用法

3.1 使用 npm scripts

npm scripts 可以在 package.json 文件的 scripts 字段中定义一些脚本命令,方便项目开发和管理。常见的脚本命令包括启动项目、运行测试、构建项目等。

"scripts": {"start": "node index.js","test": "jest","build": "webpack --config webpack.config.js"
}

然后,可以使用 npm run 来执行这些脚本:

npm run start
npm run test
npm run build

3.2 使用 npx 运行包

npx 是 npm 版本 5.2.0 以后自带的一个命令,允许开发者在不全局安装包的情况下执行命令。例如:

npx create-react-app my-app

3.3 使用 npm 版本管理

npm 版本管理可以通过 npm outdated 查看过时的依赖包,通过 npm audit 检查并修复已知的安全漏洞:

npm outdated
npm audit
npm audit fix

3.4 使用私有 npm 仓库

在一些企业项目中,可能需要使用私有 npm 仓库。可以通过配置 .npmrc 文件来实现:

registry=https://registry.your-company.com/

3.5 使用 npm Hook

npm 支持在特定生命周期阶段执行自定义命令,这些命令称为 Hook。例如,preinstallpostinstall 是两个常用的 Hook:

"scripts": {"preinstall": "echo Before installation","postinstall": "echo After installation"
}

四、常见问题与解决方案

4.1 依赖冲突

在多包项目中,可能会遇到依赖包版本冲突的问题。可以通过 npm ls 命令查看详细的依赖树,找出冲突的具体包:

npm ls

4.2 npm 缓存问题

有时安装包时会遇到缓存问题,可以通过清理缓存来解决:

npm cache clean --force

4.3 权限问题

在全局安装包时,可能会遇到权限问题。可以通过以下命令解决:

sudo npm install -g <package>

五、总结

npm 是 Node.js 生态系统中不可或缺的一部分。通过本文的介绍,你应该已经掌握了 npm 的基本使用方法和一些高级技巧。无论是管理项目依赖,还是发布自己的包,npm 都提供了丰富的功能来满足开发者的需求。希望本文能够帮助你更加高效地使用 npm,提升项目开发效率。


🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏
📜您可能感兴趣的内容:

  • 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
  • 【Java学习路线】2023年完整版Java学习路线图
  • 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
  • 【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统
  • 【数据结构学习】从零起步:学习数据结构的完整路径

在这里插入图片描述

相关文章:

深入了解 npm:Node.js 包管理工具详解

文章目录 一、npm 基本概念1.1 什么是 npm&#xff1f;1.2 package.json 文件 二、npm 常用命令2.1 初始化项目2.2 安装依赖2.2.1 安装单个包2.2.2 全局安装包2.2.3 安装开发依赖 2.3 移除依赖2.4 更新依赖2.5 查看已安装的包2.6 发布包 三、npm 高级用法3.1 使用 npm scripts3…...

记一次跨域问题

线上跨域问题&#xff0c;在自己配置确认没问题下&#xff0c;要及时找运维看看是不是nginx配置问题。 两个方面&#xff1a; 项目代码 nginx配置 SpringBoot 解决跨域问题的 5 种方案&#xff01; SpringBoot解决CORS跨域问题 SpringBoot-实现CORS跨域原理及解决方案...

第9章 负载均衡集群日常维护

一个设计良好的高可用负载均衡集群&#xff0c;交付使用以后并不能一劳永逸。欲使其高效、稳定、持续对外服务&#xff0c;日常维护必不可少。 对于高可用负载均衡集群来说&#xff0c;有两种类型的维护形式&#xff1a;常规性维护与突发性维护。突发性维护一般指故障处理&…...

鸿蒙内核源码分析(消息封装篇) | 剖析LiteIpc(上)进程通讯内容

基本概念 LiteIPC是OpenHarmony LiteOS-A内核提供的一种新型IPC&#xff08;Inter-Process Communication&#xff0c;即进程间通信&#xff09;机制&#xff0c;为轻量级进程间通信组件&#xff0c;为面向服务的系统服务框架提供进程间通信能力&#xff0c;分为内核实现和用户…...

Charger之三动态电源路径管理(DPPM)

-----本文简介----- 主要内容包括&#xff1a; 领资料&#xff1a;点下方↓名片关注回复&#xff1a;粉丝群 硬件之路学习笔记公众号 Charger的动态电源路径管理&#xff08;DPPM&#xff09; 前篇内容&#xff1a;①电池管理IC&#xff08;Charger&#xff09;了解一下&…...

大数据模型的选择与安装

大数据模型的选择和安装是一个复杂的过程&#xff0c;涉及多个因素&#xff0c;包括模型的通用能力、特定任务的性能、数据效率、评估完整性、成本以及部署的硬件和软件环境。以下是一些关于大数据模型选择与安装的考虑因素和步骤&#xff1a; 选择大数据模型的考虑因素&#…...

React 之 lazy(延迟加载)(十七)

lazy 能够让你在组件第一次被渲染之前延迟加载组件的代码。 在组件外部调用 lazy&#xff0c;以声明一个懒加载的 React 组件: import { lazy } from react;const MarkdownPreview lazy(() > import(./MarkdownPreview.js)); 配合 Suspense 实现懒加载组件 //App.js imp…...

Node.js -- 会话控制

文章目录 1. 会话介绍2. cookie 相关操作2.1 cookie 设置2.2 删除 cookie2.3 获取cookie 3. session 相关操作4. cookie 和session 的区别5. 补充知识 -- CSRF跨站请求伪造6. token 1. 会话介绍 所谓会话控制就是对会话进行控制 HTTP是一种无状态的协议&#xff0c;它没有办法…...

做抖店不能踩的几个坑,新手要照做,老玩家要听劝~

我是王路飞。 很多人都说抖店的运营很简单&#xff0c;选选品、对接一下达人&#xff0c;就可以坐等店铺出单了。 这话骗骗还没开店的小白也就得了&#xff0c;但凡做抖店超过一个月的&#xff0c;都不会相信这句话。 细心耐心是做抖店最基本的态度。 拿到一个好结果的前提…...

【Kibana】快速上手Kibana平台(KQL)

文章目录 快速使用Kibana平台常用查询语句KQL基本查询覆合查询模糊查询 目前市面上大部分的公司的日志系统都是使用ELK系统&#xff0c;因此我们进行工作必须得掌握Kibana平台的基本使用&#xff0c;这里主要说明怎么“快速使用Kibana平台”以及记录一些常用的“KQL语言”。 快…...

全方位入门git-慕课网 笔记

目录 【上传github忽略某些文件】【配置用户名和邮箱】【想要删除不需要的文件时如何进行操作】【想要给文件重命名如何操作】【想要移动文件到其他位置时如何操作】【文件有变化时&#xff0c;如何查看前后变化】【操作失误的情况下如何实现一键还原】【不再追踪时如何实现撤销…...

使用 Docker 部署 TaleBook 私人书籍管理系统

1&#xff09;项目介绍 GitHub&#xff1a;https://github.com/talebook/talebook Talebook 是一个简洁但强大的私人书籍管理系统。它基于 Calibre 项目构建&#xff0c;具备书籍管理、在线阅读与推送、用户管理、SSO 登录、从百度/豆瓣拉取书籍信息等功能。 友情提醒&#x…...

分布式系统的一致性与共识算法(一)

前言 etcd是线性一致性读&#xff0c;而zk却是顺序一致性读&#xff0c;再加上各种共识、强弱一致的名词&#xff0c;看到欸度时候总会混淆&#xff0c;这里会给出一些例子来帮助理解。 什么是一致性&#xff1f; 在谈到一致性这个词时&#xff0c;你会想到CAP理论的consist…...

创建一个Spring Boot项目

文章目录 一、如何创建一个Spring Boot项目1.1 项目创建&#xff1a;专业版 or 社区版 or 网站创建1.2 数据配置1.3 项目启动1.4 代码编写 二、Spring Boot 项目文件介绍三、Web服务器四、根据HTTP状态码解决bug4.1 4044.2 500 五、Spring VS Spring Boot VS Spring Web MVC5.1…...

ansible -playbook运维工具、语法、数据结构、命令用法、触发器、角色

目录 配置文件 基本语法规则&#xff1a; YAML支持的数据结构 playbook核心元素 ansible-playbook用法&#xff1a; 触发器 特点&#xff1a; 角色&#xff1a; 习题&#xff1a; 配置文件 playbook配置文件使用yaml语法&#xff0c;YAML 是一门标记性语言,专门用来写配…...

web前端之sass中的颜色函数、active按钮激活、hover鼠标悬浮、disabled禁用、scss循环、css

MENU 效果图htmlsassscss编译后的css页面css 效果图 注意查看蓝色按钮。 html <div class"box"><button class"btn type_1">按钮</button><button class"btn type_2">按钮</button><button class"btn ty…...

交通地理信息系统实习教程(二)

这篇文章服务于GIS背景用户以及有志于GIS的朋友 操作源数据位置&#xff1a;【免费】交通地理信息系统实习二源数据资源-CSDN文库 软件安装包位置&#xff1a;【免费】TransCad-交通地理信息系统软件资源-CSDN文库 一、最短路径分析 1.1软件启动说明 这里需要给出一个必要的…...

Shell脚本——批量清理Kubernetes集群中Evicted状态的pod

测试环境有一台宿主机出现了异常&#xff0c;大量的异常日志导致宿主机的磁盘使用率超过了85%&#xff0c;触发了上面的pod驱离策略&#xff0c;该宿主机上的的pod处于Evicted状态。在清理了磁盘之后&#xff0c;得手动处理掉这些Evicted状态的pod。 #!/bin/bash# 获取当前状态…...

(深度估计学习)Win11复现DepthFM

目录 1. 系统配置2. 拉取代码&#xff0c;配置环境3.开始深度预测4.运行结果 论文链接&#xff1a;https://depthfm.github.io/ 讲解链接&#xff1a;https://www.php.cn/faq/734404.html 1. 系统配置 本人系统&#xff1a;Win11 CUDA12.2 python3.11.5 这里附上几个CUDA安装链…...

cocos creator 帧率60 不生效meta50 能刷新到90

环境&#xff1a; cocos creator 2.4.3 华为meta 50 背景&#xff1a; 小游戏 需要在update 里取帧率 发现跟时间对不上 游戏设置60帧 手机上显示 90帧 cc.game.setFrameRate(30) 显示 30帧 cc.game.setFrameRate(60) 显示 90帧 结论&#xff1a; 对于老版本的cocos creator …...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...