深入了解 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 …...
OriginPro 2023保姆级教程:三步搞定柱状图+点线图组合,让你的科研图表颜值飙升
OriginPro 2023科研图表优化实战:从基础绘图到期刊级组合图表 科研图表是学术论文的"门面",一张精心设计的图表往往能让审稿人和读者眼前一亮。OriginPro作为科研绘图领域的标杆工具,其2023版本在图表组合和视觉优化方面带来了诸多…...
2025豆包AI高阶视频教程精准提示词合集大模型通用附教程资料大全
📂 资源包含哪些硬核内容?(部分展示) 资源下载地址:https://pan.quark.cn/s/fdeeee266e5b 主要涵盖但不限于以下核心模块: 📖 【AI阅读大师】法! 🎨 【文生图魔方…...
终极指南:Spinnaker资源生命周期管理的完整流程与最佳实践
终极指南:Spinnaker资源生命周期管理的完整流程与最佳实践 【免费下载链接】spinnaker Spinnaker is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence. 项目地址: https://gitcode.…...
Acetic Acid-PEG-Silane,与蛋白质、抗体或核酸的氨基通过酰胺键连接
一.名称英文名:AA-PEG-Silane,Acetic Acid-PEG-Silane,Silane-PEG-AA,Silane-PEG-Acetic Acid中文名:乙酸聚乙二醇三乙氧基硅烷,乙酸-PEG-三乙氧基硅烷,三乙氧基硅烷聚乙二醇羟基,硅…...
AI技术原理--AI Token是什么:10分钟搞懂大模型基础单位
当你在ChatGPT里输入"你好,今天天气怎么样"的时候,你以为它真的读懂你的话吗? 并不是。 在你看不到的地方,有一个叫"分词器"的程序,正在把你的文字拆解成一个一个叫"Token"的单元。 …...
lvgl_v8之设置label背景颜色一种方式
void lv_label_demo() {static lv_style_t style;lv_style_init(&style);lv_style_set_radius...
Windows系统盘空间告急?Driver Store Explorer帮你轻松清理冗余驱动,快速释放10GB+
Windows系统盘空间告急?Driver Store Explorer帮你轻松清理冗余驱动,快速释放10GB 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾困惑于Windows系统盘空…...
桥式电路(三)开尔文电桥在功率半导体中的实战解析
1. 从测量误差到功率革命:开尔文电桥的前世今生 1862年的实验室里,威廉汤姆森(后来的开尔文勋爵)正为小电阻测量中的诡异误差头疼不已。他发现当被测电阻低于1Ω时,连接点的接触电阻和引线电阻会彻底扭曲测量结果——这…...
Jetson Orin Nano环境搭建避坑实录:从JetPack到PyQt5,我踩过的那些‘坑’都帮你填平了
Jetson Orin Nano环境搭建避坑实录:从JetPack到PyQt5的实战指南 第一次拿到Jetson Orin Nano这块开发板时,我天真地以为按照官方文档就能轻松搞定所有环境配置。结果从JetPack安装到PyQt5编译,几乎每一步都遇到了意想不到的问题。这篇文章不会…...
90% 的 SCI 拒稿都栽在时态上!引言 / 文献综述时态黄金规则,一篇讲透
本文已收录于《科研论文写作与投稿全攻略》专栏,持续更新 SCI 论文写作、选刊投稿、审稿人回复全流程硬核干货。 几乎所有科研人都踩过这个坑:论文的研究内容、实验数据都没问题,结果审稿人一句「时态使用不规范,语言不符合学术写…...
