深入了解 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。例如,preinstall 和 postinstall 是两个常用的 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?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…...
记一次跨域问题
线上跨域问题,在自己配置确认没问题下,要及时找运维看看是不是nginx配置问题。 两个方面: 项目代码 nginx配置 SpringBoot 解决跨域问题的 5 种方案! SpringBoot解决CORS跨域问题 SpringBoot-实现CORS跨域原理及解决方案...
第9章 负载均衡集群日常维护
一个设计良好的高可用负载均衡集群,交付使用以后并不能一劳永逸。欲使其高效、稳定、持续对外服务,日常维护必不可少。 对于高可用负载均衡集群来说,有两种类型的维护形式:常规性维护与突发性维护。突发性维护一般指故障处理&…...
鸿蒙内核源码分析(消息封装篇) | 剖析LiteIpc(上)进程通讯内容
基本概念 LiteIPC是OpenHarmony LiteOS-A内核提供的一种新型IPC(Inter-Process Communication,即进程间通信)机制,为轻量级进程间通信组件,为面向服务的系统服务框架提供进程间通信能力,分为内核实现和用户…...
Charger之三动态电源路径管理(DPPM)
-----本文简介----- 主要内容包括: 领资料:点下方↓名片关注回复:粉丝群 硬件之路学习笔记公众号 Charger的动态电源路径管理(DPPM) 前篇内容:①电池管理IC(Charger)了解一下&…...
大数据模型的选择与安装
大数据模型的选择和安装是一个复杂的过程,涉及多个因素,包括模型的通用能力、特定任务的性能、数据效率、评估完整性、成本以及部署的硬件和软件环境。以下是一些关于大数据模型选择与安装的考虑因素和步骤: 选择大数据模型的考虑因素&#…...
React 之 lazy(延迟加载)(十七)
lazy 能够让你在组件第一次被渲染之前延迟加载组件的代码。 在组件外部调用 lazy,以声明一个懒加载的 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是一种无状态的协议,它没有办法…...
做抖店不能踩的几个坑,新手要照做,老玩家要听劝~
我是王路飞。 很多人都说抖店的运营很简单,选选品、对接一下达人,就可以坐等店铺出单了。 这话骗骗还没开店的小白也就得了,但凡做抖店超过一个月的,都不会相信这句话。 细心耐心是做抖店最基本的态度。 拿到一个好结果的前提…...
【Kibana】快速上手Kibana平台(KQL)
文章目录 快速使用Kibana平台常用查询语句KQL基本查询覆合查询模糊查询 目前市面上大部分的公司的日志系统都是使用ELK系统,因此我们进行工作必须得掌握Kibana平台的基本使用,这里主要说明怎么“快速使用Kibana平台”以及记录一些常用的“KQL语言”。 快…...
全方位入门git-慕课网 笔记
目录 【上传github忽略某些文件】【配置用户名和邮箱】【想要删除不需要的文件时如何进行操作】【想要给文件重命名如何操作】【想要移动文件到其他位置时如何操作】【文件有变化时,如何查看前后变化】【操作失误的情况下如何实现一键还原】【不再追踪时如何实现撤销…...
使用 Docker 部署 TaleBook 私人书籍管理系统
1)项目介绍 GitHub:https://github.com/talebook/talebook Talebook 是一个简洁但强大的私人书籍管理系统。它基于 Calibre 项目构建,具备书籍管理、在线阅读与推送、用户管理、SSO 登录、从百度/豆瓣拉取书籍信息等功能。 友情提醒&#x…...
分布式系统的一致性与共识算法(一)
前言 etcd是线性一致性读,而zk却是顺序一致性读,再加上各种共识、强弱一致的名词,看到欸度时候总会混淆,这里会给出一些例子来帮助理解。 什么是一致性? 在谈到一致性这个词时,你会想到CAP理论的consist…...
创建一个Spring Boot项目
文章目录 一、如何创建一个Spring Boot项目1.1 项目创建:专业版 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运维工具、语法、数据结构、命令用法、触发器、角色
目录 配置文件 基本语法规则: YAML支持的数据结构 playbook核心元素 ansible-playbook用法: 触发器 特点: 角色: 习题: 配置文件 playbook配置文件使用yaml语法,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的朋友 操作源数据位置:【免费】交通地理信息系统实习二源数据资源-CSDN文库 软件安装包位置:【免费】TransCad-交通地理信息系统软件资源-CSDN文库 一、最短路径分析 1.1软件启动说明 这里需要给出一个必要的…...
Shell脚本——批量清理Kubernetes集群中Evicted状态的pod
测试环境有一台宿主机出现了异常,大量的异常日志导致宿主机的磁盘使用率超过了85%,触发了上面的pod驱离策略,该宿主机上的的pod处于Evicted状态。在清理了磁盘之后,得手动处理掉这些Evicted状态的pod。 #!/bin/bash# 获取当前状态…...
(深度估计学习)Win11复现DepthFM
目录 1. 系统配置2. 拉取代码,配置环境3.开始深度预测4.运行结果 论文链接:https://depthfm.github.io/ 讲解链接:https://www.php.cn/faq/734404.html 1. 系统配置 本人系统:Win11 CUDA12.2 python3.11.5 这里附上几个CUDA安装链…...
cocos creator 帧率60 不生效meta50 能刷新到90
环境: cocos creator 2.4.3 华为meta 50 背景: 小游戏 需要在update 里取帧率 发现跟时间对不上 游戏设置60帧 手机上显示 90帧 cc.game.setFrameRate(30) 显示 30帧 cc.game.setFrameRate(60) 显示 90帧 结论: 对于老版本的cocos creator …...
3步解锁iOS应用自由:AltStore免越狱安装终极指南
3步解锁iOS应用自由:AltStore免越狱安装终极指南 【免费下载链接】AltStore AltStore is an alternative app store for non-jailbroken iOS devices. 项目地址: https://gitcode.com/gh_mirrors/al/AltStore 还在为iOS设备上无法自由安装应用而烦恼吗&#…...
从Wi-Fi信号到降噪耳机:聊聊‘相位’在工程师日常调试中的那些事儿
从Wi-Fi信号到降噪耳机:聊聊‘相位’在工程师日常调试中的那些事儿 调试设备时突然出现的信号干扰,或是降噪耳机里挥之不去的底噪,往往让工程师们头疼不已。这些看似无关的问题背后,其实都藏着一个共同的关键因素——相位。不同于…...
C++ STL常用函数一览表(快速记忆版本)
C STL 常用数据结构与函数整理 这份笔记按常见 STL 容器分类整理,适合在刷题和复习时快速查阅。1. vector 1.1 特点 底层是动态数组支持随机访问尾部插入、删除效率高中间插入、删除效率低 1.2 常用定义 vector<int> v; vector<int> v(5); /…...
为什么自己写的论文重复率会很高?
很多人第一次查重最崩的一句话就是:“这明明是我自己写的啊?”但“自己写” ≠ “系统一定判你原创”。查重系统本质上不是在判断你有没有“亲手敲字”,而是在判断:你的文字表达,和数据库里已有内容像不像。常见几个原…...
影刀RPA跨境店群自动化实战:Python协同Chromium打破风控“垄断”的高并发调度系统架构
定了。彻底打破传统商业指纹浏览器的生态「垄断」与电商巨头风控体系的「底层封锁」,我们用一套基于 Python 深度协同的分布式微服务调度架构,重塑了跨境千店矩阵的自动化底座。 这几天,科技圈被“DeepSeek V4 首发华为芯片,国产…...
无人机避障新思路:拆解EGO-Planner如何用B样条和“斥力点”省掉ESDF
无人机避障新思路:拆解EGO-Planner如何用B样条和“斥力点”省掉ESDF 当四旋翼无人机在复杂环境中穿行时,传统的避障算法往往需要构建完整的欧几里得符号距离场(ESDF),这就像要求无人机在飞行前必须绘制整个城市的等高线…...
米尔RK3562开发板深度评测:工业边缘AI网关的性价比之选
1. 项目概述:为什么关注米尔RK3562开发板?最近在给一个工业边缘计算项目选型,核心需求是在一个环境相对严苛的车间里,部署一个集成了视觉识别、多路传感器数据采集和本地轻量级推理的网关设备。性能不能太弱,否则处理不…...
华硕笔记本性能管家G-Helper:告别臃肿控制中心,重获系统掌控权
华硕笔记本性能管家G-Helper:告别臃肿控制中心,重获系统掌控权 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vi…...
别再只盯着CPU内存了!用Prometheus+Grafana打造你的K8S应用黄金监控仪表盘
从基础设施到业务价值:用PrometheusGrafana构建Kubernetes应用黄金监控体系 当Kubernetes集群中的Pod状态全部显示"Running"时,很多团队会误以为万事大吉。直到某天凌晨3点,客服系统被用户投诉淹没,才发现订单成功率已暴…...
用C语言链表实现一个简易图书管理系统(附完整源码)
从零构建C语言链表图书管理系统:工程化实践指南 当你第一次在数据结构课本上看到链表时,是否觉得这些抽象的概念离实际开发很遥远?作为C语言初学者,我完全理解这种困惑——直到亲手用链表实现了一个真正的图书管理系统。本文将带你…...
