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

npm命令介绍(Node Package Manager)

文章目录

  • npm命令全解析
    • 简介
    • 基础命令
      • 安装npm(npm -v检插版本)
      • 初始化项目(npm init)
      • 安装依赖包(npm install xxx、npm i xxx)
    • 依赖管理精解
      • 依赖类型区分(生产环境依赖dependencies、开发环境依赖devDependencies、宿主环境依赖peerDependencies、可选依赖optionalDependencies)
      • 版本控制策略
      • 依赖更新
        • 检查过时的包(npm outdated)
        • 更新特定包(npm update lodash)
        • 更新所有包(npm update)
    • 脚本与自动化
      • 自定义脚本
      • 钩子脚本(prebuild、postbuild编译前后打印)
    • 发布与共享
      • 创建可发布包
        • 注册npm账号(npm adduser)
        • 发布包(npm publish)
        • 发布特定标签版本(`npm publish --tag beta`)
      • 包版本管理
        • 补丁版本号+1 (1.0.0 -> 1.0.1)(npm version patch)
        • 次版本号+1 (1.0.0 -> 1.1.0)(npm version minor)
        • 主版本号+1 (1.0.0 -> 2.0.0)(npm version major)
    • 高级技巧
      • npm缓存操作
        • 清除缓存(`npm cache clean --force`)
        • 验证缓存(npm cache verify)
      • 安全审计
        • 检查安全漏洞(npm audit)
        • 自动修复问题(npm audit fix)
        • 仅修复开发依赖(`npm audit fix --only=dev`)
      • 私有注册表配置
        • 设置私有注册表(npm config set registry https://registry.company.com/)
        • 恢复默认注册表(npm config set registry https://registry.npmjs.org/)
    • 高效工作流
      • 交互式更新依赖
        • 交互式选择更新的依赖(`npx npm-check -u`)
      • 并行运行脚本(npm-run-all)
      • 依赖可视化
        • 安装依赖可视化工具(`npm install -g npmgraph`)
        • 生成依赖图(`npmgraph <package-name>`)
    • 最佳实践
      • 锁定依赖版本
        • 生成或更新package-lock.json(npm ci)
        • package-lock.json示例
      • 精简安装策略
        • 仅安装生产依赖(`npm install --production`)
        • 使用ci命令精确还原依赖(npm ci)

npm命令全解析

简介

npm (Node Package Manager) 是JavaScript运行时环境Node.js的默认包管理工具,为开发者提供了一种高效管理项目依赖的方式。作为世界上最大的软件注册表,npm包含了超过100万个开源包,极大地促进了JavaScript生态系统的繁荣发展。

基础命令

安装npm(npm -v检插版本)

npm随Node.js一起安装,可通过以下命令检查版本:

npm -v

在这里插入图片描述

初始化项目(npm init)

创建新项目时,首先需要初始化package.json文件:

npm init
# 或使用默认值快速创建
npm init -y

安装依赖包(npm install xxx、npm i xxx)

# 安装包并保存到dependencies
npm install lodash
# 简写形式
npm i lodash# 安装指定版本
npm install lodash@4.17.21# 安装开发依赖
npm install webpack --save-dev
# 或简写
npm i webpack -D

关于开发依赖,参考文章:npm开发依赖(仅在开发阶段需要,生产环境不需要的包)(npm install xxx --save-dev、npm i xxx -D、npm install --production)

依赖管理精解

依赖类型区分(生产环境依赖dependencies、开发环境依赖devDependencies、宿主环境依赖peerDependencies、可选依赖optionalDependencies)

{"dependencies": {"react": "^17.0.2"    // 生产环境依赖},"devDependencies": {"webpack": "^5.52.0"  // 开发环境依赖},"peerDependencies": {"react": ">=16.8.0"   // 宿主环境依赖},"optionalDependencies": {"fsevents": "^2.3.2"  // 可选依赖,安装失败不会导致npm install失败}
}

版本控制策略

"lodash": "^4.17.21"  // ^表示兼容补丁和小版本更新
"express": "~4.17.1"  // ~表示兼容补丁版本更新
"moment": "4.17.1"    // 精确版本
"webpack": ">=5.0.0"  // 大于等于指定版本

依赖更新

检查过时的包(npm outdated)
npm outdated
更新特定包(npm update lodash)
npm update lodash
更新所有包(npm update)
npm update

脚本与自动化

自定义脚本

package.json中定义常用操作:

{"scripts": {"start": "node server.js",            // 启动应用"dev": "nodemon server.js",           // 开发模式"build": "webpack --mode production", // 构建生产版本"test": "jest",                       // 运行测试"lint": "eslint ."                    // 代码检查}
}

运行脚本:

npm run dev
# start、test、stop、restart可以省略run
npm test

钩子脚本(prebuild、postbuild编译前后打印)

{"scripts": {"prebuild": "echo '构建前执行'",  // build前自动执行"build": "webpack","postbuild": "echo '构建后执行'"  // build后自动执行}
}

发布与共享

创建可发布包

注册npm账号(npm adduser)
发布包(npm publish)
发布特定标签版本(npm publish --tag beta

包版本管理

补丁版本号+1 (1.0.0 -> 1.0.1)(npm version patch)
次版本号+1 (1.0.0 -> 1.1.0)(npm version minor)
主版本号+1 (1.0.0 -> 2.0.0)(npm version major)

高级技巧

npm缓存操作

清除缓存(npm cache clean --force
验证缓存(npm cache verify)

安全审计

检查安全漏洞(npm audit)
自动修复问题(npm audit fix)
仅修复开发依赖(npm audit fix --only=dev

私有注册表配置

设置私有注册表(npm config set registry https://registry.company.com/)
恢复默认注册表(npm config set registry https://registry.npmjs.org/)

高效工作流

交互式更新依赖

交互式选择更新的依赖(npx npm-check -u

并行运行脚本(npm-run-all)

使用npm-run-all包简化多脚本运行:

{"scripts": {"lint:js": "eslint .",                      // JS代码检查"lint:css": "stylelint '**/*.css'",         // CSS代码检查"lint": "npm-run-all --parallel lint:*",    // 并行运行所有lint脚本"dev:server": "nodemon server.js",          // 后端开发服务"dev:client": "webpack serve",              // 前端开发服务"dev": "npm-run-all --parallel dev:*"       // 并行运行所有dev脚本}
}

依赖可视化

安装依赖可视化工具(npm install -g npmgraph
生成依赖图(npmgraph <package-name>

最佳实践

锁定依赖版本

生成或更新package-lock.json(npm ci)
package-lock.json示例
{"name": "project-name","lockfileVersion": 2,"requires": true,"packages": {"node_modules/lodash": {"version": "4.17.21","resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz","integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="}}
}

精简安装策略

仅安装生产依赖(npm install --production
使用ci命令精确还原依赖(npm ci)

通过本文全面掌握npm命令,能够显著提升JavaScript项目开发效率和质量。从基础命令到高级技巧,npm为现代JavaScript开发提供了强大而灵活的工具链支持。

相关文章:

  • 2025五一杯数学建模竞赛B题 矿山数据处理 保姆级教程讲解|模型讲解
  • 2025五一杯数学建模ABC题赛题已出
  • SpringAI系列 - 升级1.0.0-M8
  • VBA数据库解决方案第二十讲:Select From Where条件表达式
  • CMake中的“包管理“模块FetchContent
  • 2025五一数学建模竞赛B题完整分析论文(共42页)(含模型、可运行代码、数据)
  • 【CV数据集】DIOR遥感目标检测数据集(含处理好的YOLO、COCO、VOC格式和相关配置文件下载链接)
  • 数字智慧方案5971丨智慧农业大数据平台解决方案(59页PPT)(文末有下载方式)
  • AM剪辑软件汉化版:简单易用,开启视频创作之旅
  • 实现Sentinel与Nacos的规则双向同步
  • 案例:自动化获取Web页面小说(没钱修什么仙)——selenium
  • C++之特殊类设计及类型转换
  • linux下安装ollama网不好怎么办?
  • 【分享】数据恢复大师6.10[特殊字符]恢复手机误删的数据[特殊字符]
  • 位运算题目:寻找重复数
  • Flutter PIP 插件 ---- 新增PipActivity,Android 11以下支持自动进入PIP Mode
  • Fellou:重新定义浏览器边界的智能行动平台
  • 【漫话机器学习系列】235.切分文本(Tokenize Text)
  • OSPF的路由
  • Python 数据智能实战 (6):用户评论深度挖掘
  • 旅游特种兵们,这个五一“躲进”书吧
  • 案件发回重审,李在明参选韩总统之路再添波折
  • 金砖国家外长会晤落幕,外交部:发出了反对单边霸凌行径的“金砖声音”
  • 三大猪企一季度同比均实现扭亏为盈,营收同比均实现增长
  • 特朗普执政百日集会吹嘘政绩,美国消费者信心指数跌至疫情以来最低
  • 普京与卢卡申科举行会晤,将扩大在飞机制造等领域合作