npm命令介绍(Node Package Manager)(Node包管理器)

文章目录

  • npm命令全解析
    • 简介
    • 基础命令
      • 安装npm(npm -v检插版本)
      • 初始化项目(npm init)
      • 安装依赖包(npm install xxx、npm i xxx)
      • 卸载依赖包(npm uninstall xxx 或 npm uni xxx、npm remove xxx)
      • 列出已安装的包(npm list)
    • 依赖管理精解
      • 依赖类型区分(生产环境依赖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 info lodash)
        • 搜索包(npm search keyword)
      • 安全审计
        • 检查安全漏洞(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/)
      • 全局包管理
        • 全局安装包(npm install -g package)
        • 全局卸载包(npm uninstall -g package)
        • 查看全局安装位置(npm root -g)
    • 高效工作流
      • 交互式更新依赖
        • 交互式选择更新的依赖(`npx npm-check -u`)
      • 并行运行脚本(npm-run-all)
      • 依赖可视化
        • 安装依赖可视化工具(`npm install -g npmgraph`)
        • 生成依赖图(`npmgraph <package-name>`)
      • 本地包开发与链接(npm link)
    • 定义
    • 命令
    • 最佳实践
      • 锁定依赖版本
        • 生成或更新package-lock.json(npm ci)
        • package-lock.json示例
      • 精简安装策略
        • 仅安装生产依赖(`npm install --production`)
        • 使用ci命令精确还原依赖(npm ci)
      • 环境检查与诊断(npm doctor)

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)

卸载依赖包(npm uninstall xxx 或 npm uni xxx、npm remove xxx)

# 卸载包并从dependencies中移除
npm uninstall lodash
# 简写形式
npm rm lodash
# 或
npm remove lodash# 卸载开发依赖
npm uninstall webpack --save-dev
# 或简写
npm rm webpack -D

列出已安装的包(npm list)

# 列出所有已安装的包
npm list# 只显示顶层依赖
npm list --depth=0# 查看特定包
npm list lodash

依赖管理精解

依赖类型区分(生产环境依赖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 info lodash)
npm info lodash
# 查看特定版本信息
npm info lodash versions
搜索包(npm search keyword)
npm search react-component

安全审计

检查安全漏洞(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/)

全局包管理

全局安装包(npm install -g package)
# 全局安装包
npm install -g typescript
# 或简写
npm i -g typescript
全局卸载包(npm uninstall -g package)
npm uninstall -g typescript
查看全局安装位置(npm root -g)
npm root -g

高效工作流

交互式更新依赖

交互式选择更新的依赖(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>

本地包开发与链接(npm link)

定义

npm link 是用于本地包开发和测试的强大工具,主要解决以下问题:

  1. 开发阶段测试:当你开发自己的 npm 包时,可以通过 npm link 在不发布到 npm 仓库的情况下,在其他项目中测试这个包

  2. 工作原理

    • 在包目录执行 npm link 会在全局 node_modules 创建一个符号链接
    • 在使用该包的项目中执行 npm link package-name 创建指向全局链接的本地链接
  3. 实际使用场景

    • 同时开发多个相互依赖的包
    • 修改第三方库并在本地测试
    • 团队协作时共享尚未发布的包
  4. 优势:对本地包的任何修改都会立即反映在使用它的项目中,无需重新安装,大大提高了开发效率

解除链接可以使用 npm unlink package-namenpm uninstall package-name 命令。

命令

# 在本地包目录中执行,创建全局链接
npm link# 在需要使用本地包的项目中执行
npm link 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 doctor)

npm doctor

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】Linux基础概念

一些比较重要的使用Linux的前情提要。 部分经验来源于网络&#xff0c;若有侵权请联系我删除&#xff0c;主要是做笔记的时候忘记写来源了&#xff0c;做完笔记很久才写博客。 专栏目录&#xff1a;记录自己的嵌入式学习之路-CSDN博客 目录 1 Shell命令参数 2 系统变量…

阿里开源Qwen3:大语言模型的新突破

一、模型概览&#xff1a;丰富的模型家族 Qwen3 系列包含了 2 款混合专家&#xff08;MoE&#xff09;模型与 6 款密集&#xff08;Dense&#xff09;模型&#xff0c;参数量覆盖范围极广&#xff0c;从 0.6B 一直延伸至 235B 。其中&#xff0c;旗舰模型 Qwen3 - 235B - A22B…

数字智慧方案5856丨智慧环保综合解决方案(50页PPT)(文末有下载方式)

资料解读&#xff1a;智慧环保综合解决方案 详细资料请看本解读文章的最后内容。 随着城市化进程的加速和环境问题的日益严峻&#xff0c;智慧环保成为提升城市环境管理水平的重要手段。本文将对智慧环保综合解决方案进行详细解读&#xff0c;探讨其在实际应用中的需求、解决…

基于ssm的网盘管理系统(全套)

一、系统架构 前端&#xff1a;vue | element-ui 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.8 | mysql | maven | tomcat | nodejs 二、代码及数据库 三、功能介绍 01. 注册 02. 登录 03. 管理员-首页 04. 管理员-个人中心 …

PostgreSQL 的 VACUUM 与 VACUUM FULL 详解

PostgreSQL 的 VACUUM 与 VACUUM FULL 详解 一、基本概念对比 特性VACUUMVACUUM FULL定义常规维护操作&#xff0c;清理死元组激进重组操作&#xff0c;完全重写表数据锁级别不阻塞读写(共享锁)排他锁(阻塞所有操作)空间回收只标记空间为可用&#xff0c;不返还OS空间返还操作…

复刻低成本机械臂 SO-ARM100 舵机配置篇(WSL)

视频讲解&#xff1a; 复刻低成本机械臂 SO-ARM100 舵机配置篇&#xff08;WSL&#xff09; 飞特舵机 组装之前需要配置舵机的ID&#xff0c;如下的网址为舵机的资料&#xff0c;实际上用不到&#xff0c;但可以mark在这里 Software-深圳飞特模型有限公司 User Guide里面可以…

Tailwind CSS实战技巧:从核心类到高效开发

使用 Kooboo平台 训练实战技巧&#xff0c;无需配置安装&#xff0c;直接引入CDN就可以在线练习了&#xff01;具体操作流程&#xff1a;进入Kooboo后&#xff0c;选择创建空白站点 -> 站点开发 -> 控制面板 -> 页面 ->新建普通页面 -> 编写代码 一、核心布局类…

【LINUX操作系统】线程操作

了解了线程的基本原理之后&#xff0c;我们来学习线程在C语言官方库中的写法与用法。 1. 常见pthread接口及其背后逻辑 1.1 pthread_create 与线程有关的函数构成了⼀个完整的系列&#xff0c;绝⼤多数函数的名字都是以“pthread_”打头的 • 要使⽤这些函数库&#xff0c;…

【AI面试准备】Azure DevOps沙箱实验全流程详解

介绍动手实验&#xff1a;通过 Azure DevOps 沙箱环境实操&#xff0c;体验从代码提交到测试筛选的全流程。如何快速掌握&#xff0c;以及在实际工作中如何运用。 通过 Azure DevOps 沙箱环境进行动手实验&#xff0c;是快速掌握 DevOps 全流程&#xff08;从代码提交到测试筛选…

VulnHub-DC-2靶机

主机发现 sudo arp-scan -l 以sudo管理员权限扫描本地活动ip地址 Interface: eth0, type: EN10MB, MAC: 08:00:27:22:46:4f, IPv4: 192.168.252.230 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.252.6 4c:5f:70:74:3c:3b …

藏语英语中文机器翻译入门实践

&#x1f3af; 项目目标&#xff1a; 输入藏文句子&#xff0c;自动翻译成英文和中文&#xff08;或输入中文&#xff0c;翻译为英文和藏文&#xff09;。 &#x1f50d; 技术与原理简介 机器翻译&#xff08;Machine Translation, MT&#xff09;是人工智能中自然语言处理&a…

【阿里云大模型高级工程师ACP习题集】2.9 大模型应用生产实践(上篇)

练习题 【单选题】在自然语言处理的法务咨询场景中,以下哪种模型选择最为合适? A. 通用大语言模型 B. 经过数学领域微调的模型 C. 面向法律领域训练的模型 D. 视觉模型 【多选题】以下哪些属于模型非功能性需求?( ) A. 模型对不同语言的支持能力 B. 模型的响应速度要求 C.…

WPF之ProgressBar控件详解

文章目录 1. ProgressBar控件简介2. ProgressBar的基本属性和用法2.1 基本属性2.2 基本用法2.3 代码中修改进度 3. 确定与不确定模式3.1 确定模式&#xff08;Determinate&#xff09;3.2 不确定模式&#xff08;Indeterminate&#xff09; 4. 在多线程环境中更新ProgressBar4.…

IntelliJ IDEA 保姆级安装教程(附安装包)

文章目录 一、下载二、安装三、启动 一、下载 Ultimate 2021.1.1 - Windows x64 (exe) 二、安装 三、启动 首次安装启动 非首次安装启动

Performance API 性能上报

以下是关于 Performance API 性能上报的基本知识点总结: 一、性能监控核心指标体系 1. 关键性能指标(Web Vitals) 指标标准采集方式健康阈值LCP (最大内容绘制)测量加载性能PerformanceObserver≤2.5sFID (首次输入延迟)测量交互响应PerformanceObserver≤100msCLS (累积布…

C语言-指针(一)

目录 指针 内存 概念 指针变量 取地址操作符&#xff08;&&#xff09; 操作符“ * ” 指针变量的大小 注意 指针类型的意义 作用 void * 指针 const修饰指针变量 const放在*前 const放在*后 双重const修饰 指针的运算 1.指针 - 整数 2.指针 - 指针 3.指…

华为云Astro大屏连接器创建操作实例:抽取物联网iotda影子设备数据的连接器创建

目录 样图(API连接器创建成功) 说明 操作场景(以Astro大屏抽取iotda影子参数为例) 实际操作步骤 新建连接器 设置基本信息。 接口鉴权方式,支持API鉴权、AK/SK、API Key和无身份验证 无身份验证 AK/SK认证(目前暂不能用) API Key认证(第三方使用) API鉴权认…

【硬件系统架构】哈佛架构

一、引言 在计算机科学的浩瀚宇宙中&#xff0c;计算机体系结构犹如星辰般繁多且各有独特光芒。哈佛架构便是其中一颗耀眼的明星&#xff0c;它在众多计算机体系结构中占据着独特而重要的地位。从计算机技术的萌芽期一路走来&#xff0c;哈佛架构不断发展演变&#xff0c;在不同…

华为eNSP:IS-IS认证

一、什么是IS-IS认证&#xff1f; 华为eNSP中的IS-IS认证 IS-IS认证是华为eNSP网络中用于保障中间系统到中间系统&#xff08;IS-IS&#xff09;协议通信安全性的核心机制&#xff0c;通过身份验证和数据完整性校验防止非法路由信息注入或篡改。其实现方式与关键特性如下&…

如何创建并使用极狐GitLab 项目访问令牌?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 项目访问令牌 在极狐GitLab 16.1中引入添加了默认前缀。 项目访问令牌类似于密码&#xff0c;但你可以 限制访问资源&#xf…