npm是什么?项目依赖包管理方法
珍惜时间,勤奋学习!今天给大家带来《npm是什么?如何管理项目依赖包》,正文内容主要涉及到等等,如果你正在学习文章,或者是对文章有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!
npm是服务+客户端+注册中心的组合体,不打包编译,只负责依赖管理;装全局或本地取决于-g参数及是否在含package.json的项目根目录。

npm 是 JavaScript 生态中事实上的包管理器,不是“工具”而是“服务+命令行客户端+注册中心”的组合体。它本身不打包、不编译,只负责下载、安装、解析依赖关系和执行脚本。
npm install 为什么有时装全局,有时装本地?
关键看有没有 -g 参数,以及当前是否在项目根目录(含 package.json):
npm install lodash→ 装到当前项目的node_modules下,写入dependenciesnpm install -D eslint→ 装到node_modules,但写入devDependenciesnpm install -g create-react-app→ 装到系统级路径(如/usr/local/lib/node_modules),所有终端都能直接运行create-react-app
⚠️ 注意:npm install(不带参数)会读取当前 package.json,按 dependencies 和 devDependencies 自动重装所有包 —— 这是团队协作时的标准操作,不是“重复安装”。
package.json 的 dependencies 和 devDependencies 怎么选?
区分逻辑很简单:运行时是否必须存在。
dependencies:代码里require('react')或import axios from 'axios'→ 必须打进生产包,用户浏览器或 Node 服务启动时需要devDependencies:只在开发阶段用,比如webpack、jest、prettier→ 构建完就扔,上线不带它们
装错会导致两种典型问题:Cannot find module 'xxx'(漏进 dependencies),或生产环境体积暴涨(误塞构建工具进 dependencies)。
node_modules 为什么又大又乱?怎么避免反复重装?
根本原因是 npm 默认采用嵌套式依赖结构(v6 及以前),不同包的相同子依赖可能被重复安装多次。v7+ 默认启用 dedupe,但仍可能因版本冲突无法扁平化。
真正可控的做法是:
- 始终用
npm ci替代npm install上 CI/CD 或部署机 —— 它严格按package-lock.json安装,跳过依赖解析,更快更确定 - 删
node_modules前先确认package-lock.json存在且未被忽略(.gitignore 不该加它) - 不用
npm update随意升版,改用npm outdated查看可更新项,再npm install xxx@latest显式指定
npm outdated # 输出类似: # Package Current Wanted Latest Location # lodash 4.17.20 4.17.21 4.17.21 my-project
为什么有时候 npm install 报 EACCES 或 ENOENT?
最常见两类权限和路径错误:
EACCES: permission denied→ 多半是用了sudo npm install -g导致后续全局写入权限混乱。正确解法是改 npm 全局路径:mkdir ~/.npm-global npm config set prefix '~/.npm-global' # 然后把 ~/.npm-global/bin 加进 $PATH
ENOENT: no such file or directory→ 通常是package-lock.json记录了某个包的 tarball URL,但网络抽风或 registry 切换(比如从 npmjs.org 换成 taobao)导致下载失败。临时切回官方源:npm set registry https://registry.npmjs.org/
第三方 registry(如 https://registry.npmmirror.com)虽快,但镜像同步有延迟,某些刚发布的包可能查不到 —— 这点容易被忽略,尤其当你盯着一个新包的文档却死活 install 不上时。
终于介绍完啦!小伙伴们,这篇关于《npm是什么?项目依赖包管理方法》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!
Golang实现AES-GCM文件加密教程
- 上一篇
- Golang实现AES-GCM文件加密教程
- 下一篇
- 有道云笔记更改默认存储位置教程
-
- 文章 · 前端 | 2小时前 |
- Vite import.meta.glob 怎样批量加载模块
- 157浏览 收藏
-
- 文章 · 前端 | 2小时前 | javascript · localStorage JSON.parse JSON.stringify Web Storage
- Web Storage 为什么 localStorage 不能保存对象
- 283浏览 收藏
-
- 文章 · 前端 | 2小时前 |
- CSS line-clamp 怎样把多行文本限制在固定行数
- 352浏览 收藏
-
- 文章 · 前端 | 2小时前 |
- IntersectionObserver 怎样实现列表图片进入视口再加载
- 139浏览 收藏
-
- 文章 · 前端 | 2小时前 | javascript · ArrayBuffer TypedArray Transferable Web Workers
- Web Workers 怎样用 transferable 减少数组复制
- 218浏览 收藏
-
- 文章 · 前端 | 2小时前 | 前端 · javascript · Fetch 流式读取 ReadableStream TextDecoder Response.Body
- Fetch Response.body 怎样逐块读取文本流
- 492浏览 收藏
-
- 文章 · 前端 | 2小时前 |
- CSS transition-behavior 怎样让 display 切换也参与过渡
- 366浏览 收藏
-
- 文章 · 前端 | 2小时前 | JavaScript 请求超时 Fetch AbortController AbortSignal.timeout
- JavaScript AbortSignal.timeout 怎样取消超时请求
- 273浏览 收藏
-
- 文章 · 前端 | 2小时前 | 前端 · css · CSS 中文排版 text-spacing-trim CJK 标点间距
- CSS text-spacing-trim 怎样处理 CJK 标点两侧空隙
- 406浏览 收藏
-
- 文章 · 前端 | 2小时前 |
- CSS scroll-snap 怎样让横向列表停在卡片边缘
- 471浏览 收藏
-
- 文章 · 前端 | 3小时前 | 前端 · css · CSS 容器查询 响应式组件 container-type
- CSS container-type 怎样让组件按容器尺寸响应
- 148浏览 收藏
-
- 文章 · 前端 | 13小时前 | 前端 · javascript · 浏览器API · AbortController AbortSignal JavaScript异步任务 scheduler.postTask
- scheduler.postTask 取消尚未执行任务的处理方案
- 304浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 700次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 709次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 781次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 742次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 575次使用
-
- JavaScript函数定义及示例详解
- 2025-05-11 502浏览
-
- 智能体安全引领产业升级——国内AI安全产品市场深度分析
- 2026-08-21 501浏览
-
- CSS变量简化按钮悬停效果技巧
- 2026-05-31 501浏览
-
- JavaScript符号类型详解与应用
- 2026-05-31 501浏览
-
- HTML剪贴板复制粘贴怎么用
- 2026-05-26 501浏览

