nodejs - npm和package.json文件解析
文章目录一、npm1.1 与其他语言包管理器的类比1.2 npm 常用命令速查表二、package.json2.1 常用字段总览2.2 依赖相关字段详解1. dependencies生产依赖2. devDependencies开发依赖3. peerDependencies同级依赖4. 版本号语法semver2.3 scripts 脚本2.4 engines - 环境要求2.5 其他实用字段2.6 package-lock.json 的作用三、最佳实践建议一、npmnpm全称Node Package Manager是 Node.js 的官方包管理工具。它是一个基于命令行的工具用于帮助开发者在项目中安装、升级、移除和管理依赖同时也支持发布自己的包到 npm 仓库。官网https://www.npmjs.com/1.1 与其他语言包管理器的类比语言包管理器说明Node.jsnpmNode.js 官方包管理器PHPComposerPHP 的依赖管理工具JavaMaven / Gradle构建与依赖管理工具PythonpipPython 包管理器RustCargoRust 的包管理与构建工具Gogo modGo 的模块管理工具1.2 npm 常用命令速查表分类命令作用描述项目初始化npm init/npm init -y初始化项目并创建 package.json安装依赖npm install安装 package.json 中的所有依赖npm install package安装指定包到dependenciesnpm install package -D安装到devDependencies推荐简写npm install package -g全局安装npm install package版本号安装指定版本依赖管理npm update package更新指定包npm uninstall package卸载包npm outdated检查过时的依赖npm audit/npm audit fix检查并尝试修复安全漏洞npm ls/npm list查看已安装的依赖树脚本执行npm run script运行 package.json 中的脚本npm start/npm test特殊脚本可省略run包信息npm search keyword搜索 npm 仓库npm info package/npm view查看包详细信息发布相关npm login/npm logout登录 / 注销 npm 账户npm publish发布包到 npm配置管理npm config list列出所有 npm 配置npm get registry查看当前镜像源npm set registry url设置镜像源其他npm link将本地包链接到全局npm ci根据 lock 文件进行干净安装推荐 CI 使用npx package临时执行包中的命令无需全局安装二、package.jsonpackage.json是 Node.js 项目的核心配置文件它定义了项目的元数据、依赖项、脚本命令、入口文件等重要信息。几乎所有基于 Node.js 的项目都会有这个文件。2.1 常用字段总览字段名类型作用描述name字符串项目名称发布到 npm 时必须唯一推荐小写 连字符version字符串项目版本号遵循语义化版本如1.0.0description字符串项目简短描述main字符串CommonJS 入口文件如dist/index.jsmodule字符串ES Module 入口文件现代打包工具优先使用types/typings字符串TypeScript 类型声明文件入口exports对象/字符串更现代的导出映射推荐替代单纯的maintype字符串指定模块系统module或commonjskeywords字符串数组关键词用于 npm 搜索author字符串/对象作者信息license字符串开源许可证如MIT、Apache-2.0、ISCdependencies对象生产环境依赖devDependencies对象开发环境依赖peerDependencies对象同级依赖宿主环境需要提供的包optionalDependencies对象可选依赖安装失败不会导致整体失败scripts对象可执行的脚本命令repository对象代码仓库信息bugs对象/字符串Bug 反馈地址homepage字符串项目主页engines对象指定 Node.js / npm 版本要求files数组发布到 npm 时包含的文件白名单private布尔值设为true可防止意外发布到 npmbrowserslist数组/字符串浏览器兼容性配置供 Babel、Autoprefixer 等使用必填字段发布到 npm 时name和version是必填项。2.2 依赖相关字段详解1. dependencies生产依赖项目运行时真正需要的包。dependencies:{react:^18.2.0,express:^4.18.2}安装方式npminstallreact# 或npmi express2. devDependencies开发依赖只在开发、构建、测试时使用的包不会被打包到生产环境。devDependencies:{typescript:^5.0.0,eslint:^8.0.0,vite:^5.0.0}安装方式npminstalltypescript-D# 或npmi eslint --save-dev3. peerDependencies同级依赖常用于组件库、插件场景。表示“我需要这个包但不自己安装要求宿主项目提供”。peerDependencies:{react:17.0.0,react-dom:17.0.0}4. 版本号语法semver写法含义示例允许范围1.2.3精确版本仅 1.2.3^1.2.3兼容更新默认≥1.2.3 且 2.0.0~1.2.3近似更新≥1.2.3 且 1.3.01.2.3大于等于≥1.2.3*或x任意版本任意latest最新版本最新发布2.3 scripts 脚本scripts是 package.json 中非常重要的字段用于定义常用命令。scripts:{dev:vite,build:vite build,preview:vite preview,lint:eslint src --ext .ts,.tsx,test:vitest,prepare:husky install}执行方式npmrun devnpmrun buildnpmstart# 特殊脚本可省略 runnpmtest# 特殊脚本可省略 run生命周期脚本会自动执行preinstall/postinstallprepublishOnlyprepare安装依赖后自动执行常用于 husky2.4 engines - 环境要求engines:{node:18.0.0,npm:9.0.0}配合.npmrc中的engine-stricttrue可以强制检查。2.5 其他实用字段repositoryrepository:{type:git,url:https://github.com/user/repo.git}files控制发布内容files:[dist,README.md,LICENSE]type决定默认模块系统type:module// 默认使用 ES Module// 或type:commonjs// 默认使用 CommonJSprivateprivate:true// 防止执行 npm publish 时误发布2.6 package-lock.json 的作用锁定依赖的精确版本和依赖树结构保证不同环境开发、测试、生产、CI安装结果一致由 npm 自动生成和维护不建议手动修改推荐提交到 Git 仓库相关命令npminstall# 会根据 package.json 更新 lock 文件npmci# 严格按照 lock 文件安装CI 推荐三、最佳实践建议生产依赖 vs 开发依赖要严格区分避免把测试工具、构建工具放进dependencies。使用^作为默认版本前缀兼顾兼容性与更新。把package-lock.json提交到 Git保证依赖一致性。私有项目记得加private: true。合理使用scripts把常用命令都写进去方便团队协作。发布到 npm 前用files字段控制只上传必要文件。推荐配合.npmrc统一镜像源和配置。 感谢阅读想了解更多 我的博客网站 | 记录思考分享干货 我的个人主页 | 关于我、开源项目

相关新闻

IData T1工业PDA H5扫码方案:WebView+JSBridge混合开发实战

IData T1工业PDA H5扫码方案:WebView+JSBridge混合开发实战

1. 项目背景与核心挑战:为什么在IData T1上做H5扫码是个“技术活”?如果你手头有一台IData T1这样的工业级PDA,想用它来跑一个H5页面实现扫码功能,听起来是不是挺简单的?打开浏览器,调起摄像头,…

2026/8/26 20:48:48 阅读更多 →
如何用摸鱼低代码的自助API 3分钟生成查询接口?新手入门完全指南

如何用摸鱼低代码的自助API 3分钟生成查询接口?新手入门完全指南

如何用摸鱼低代码的自助API 3分钟生成查询接口?新手入门完全指南 【免费下载链接】mfish-nocode 摸鱼低代码平台,是一款致力于让开发像摸鱼一样轻松的低代码/无代码平台。首创微服务单体服务一体化架构。基于SpringBoot4、Spring Ai、Vue3等最新前后端技…

2026/8/25 17:23:39 阅读更多 →
Camel in Action入门:第一个Camel路由10分钟实战,从文件复制到企业集成

Camel in Action入门:第一个Camel路由10分钟实战,从文件复制到企业集成

Camel in Action入门:第一个Camel路由10分钟实战,从文件复制到企业集成 【免费下载链接】camelinaction2 :camel: This project hosts the source code for the examples of the Camel in Action 2nd ed book :closed_book: written by Claus Ibsen and …

2026/8/25 17:23:39 阅读更多 →

最新新闻

MySQL容器化部署实战:优势、挑战与生产级配置指南

MySQL容器化部署实战:优势、挑战与生产级配置指南

1. 项目概述:当经典数据库遇上容器化浪潮最近在规划一个新项目的技术栈,数据库选型毫无悬念地定了MySQL,但在部署方式上,团队里产生了分歧:是继续沿用传统的物理机或虚拟机部署,还是拥抱容器化,…

2026/8/26 21:28:40 阅读更多 →
TJA1043T CAN收发器特定报文唤醒功能设计与低功耗系统实现

TJA1043T CAN收发器特定报文唤醒功能设计与低功耗系统实现

1. 项目概述:从“休眠”到“唤醒”的智能节点设计 在汽车电子或者工业控制领域,我们常常会遇到一个经典的需求:一个节点设备大部分时间需要处于低功耗的休眠状态以节省能源,但又要能在特定条件下被精准地唤醒,投入工作…

2026/8/26 21:28:40 阅读更多 →
BUSMASTER诊断与自动化测试实战:从工具使用到工作流优化

BUSMASTER诊断与自动化测试实战:从工具使用到工作流优化

1. 项目概述:从工具使用者到问题解决者的视角转变 最近在整理手头的几个嵌入式车载网络测试项目,发现一个挺有意思的现象:很多工程师,包括我自己在早期,都把像BUSMASTER这类工具当成一个“黑盒”来用。大家最关心的是怎…

2026/8/26 21:28:40 阅读更多 →
GPS轨迹反推信号灯周期:事件密度谱实战方法

GPS轨迹反推信号灯周期:事件密度谱实战方法

1. 这道题到底在考什么:从“行车轨迹”到“信号灯周期”的真实映射逻辑很多人看到“2024华中杯B题”第一反应是:又一道数学建模题,套个模型、跑个代码、画几张图就完事了。但真正做过城市交通数据分析的人会立刻意识到——这道题的难点根本不…

2026/8/26 21:28:40 阅读更多 →
顺丰校招笔试解析:数据结构与物流算法实战

顺丰校招笔试解析:数据结构与物流算法实战

1. 笔试真题解析概述 顺丰2026年春季校招笔试第二套题目作为物流行业头部企业的选拔标准,其设计思路和考察重点值得深入分析。这套题目主要面向技术类岗位应聘者,涵盖了数据结构与算法、系统设计、业务场景分析等核心内容,能够全面评估候选人…

2026/8/26 21:28:40 阅读更多 →
2026年技术面试新趋势:系统设计与工程实践解析

2026年技术面试新趋势:系统设计与工程实践解析

1. 行业现状与认知误区 2026年的科技行业招聘市场正在经历一场静默变革。作为经历过三次行业周期更替的面试官,我发现近两年候选人的准备策略出现了明显的路径依赖——LeetCode刷题量成为绝大多数人唯一关注的指标。但真实招聘数据表明,仅靠刷题通过技术…

2026/8/26 21:27:40 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →