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

NPM 常用命令

NPM 常用命令

NPM(Node Package Manager)是 JavaScript 生态系统中最流行的包管理工具,它不仅可以管理 Node.js 项目的依赖,还提供了丰富的命令来管理和发布你的代码。本文将从不同角度,深入浅出地介绍 NPM 的常用命令和实际应用。

目录

  1. NPM 基础
    • 什么是 NPM
    • 安装 NPM
    • 初始化项目 (npm init)
  2. 管理依赖
    • 安装依赖 (npm install)
    • 升级和卸载依赖 (npm update, npm uninstall)
    • 保存依赖 (--save, --save-dev)
  3. 运行脚本
    • 定义脚本 (scripts 字段)
    • 运行脚本 (npm run)
    • 常见脚本示例
  4. 包管理
    • 发布包 (npm publish)
    • 版本控制 (npm version)
    • 标记和发布标签 (npm tag)
  5. 配置和调试
    • 配置 NPM (npm config)
    • 查看和设置参数 (npm get, npm set)
    • 调试 NPM (npm audit, npm cache)

1. NPM 基础

什么是 NPM

NPM 是 Node.js 的包管理工具和默认的包管理器,它用于管理 JavaScript 代码包。NPM 仓库是全球最大的开源库,包含了数百万个 JavaScript 包。

  • 管理依赖:自动处理依赖的安装、升级和卸载。
  • 运行脚本:通过 package.json 中的 scripts 字段定义和运行项目任务。
  • 发布和分享:开发和发布自己的包到 NPM 仓库。
安装 NPM

NPM 通常与 Node.js 一起安装。你可以从 Node.js 官网 下载 Node.js,它包含了 NPM。

# 检查是否安装了 NPM
npm -v
初始化项目 (npm init)

在开始使用 NPM 之前,你需要初始化一个项目,这会创建一个 package.json 文件,存储项目的元数据和依赖信息。

# 初始化项目并交互式创建 package.json 文件
npm init# 使用默认值快速初始化
npm init -y

package.json 文件包含了项目的名称、版本、描述、入口文件、脚本、依赖等信息。

{"name": "my-project","version": "1.0.0","description": "A simple NPM project","main": "index.js","scripts": {"start": "node index.js"},"dependencies": {},"devDependencies": {}
}

2. 管理依赖

NPM 的核心功能之一是管理项目的依赖库。这些依赖库可以是你项目所需的任何第三方包。

安装依赖 (npm install)

NPM 通过 npm install 命令来安装包。你可以安装单个包,也可以安装 package.json 中列出的所有包。

# 安装一个指定的包
npm install lodash# 安装并保存到 package.json 中的 dependencies
npm install express --save# 安装并保存到 package.json 中的 devDependencies
npm install jest --save-dev# 安装 package.json 中的所有依赖
npm install

执行完 npm install 后,所有的包都会被安装到 node_modules 目录中,同时 package-lock.json 文件会记录精确的版本信息,确保项目在不同环境下的一致性。

升级和卸载依赖 (npm update, npm uninstall)

你可以升级项目的依赖到最新版本,或卸载不再需要的依赖。

# 升级单个包到最新版本
npm update lodash# 升级所有包到最新版本
npm update# 卸载一个包
npm uninstall lodash# 卸载并从 package.json 中删除条目
npm uninstall lodash --save
npm uninstall jest --save-dev
保存依赖 (--save, --save-dev)
  • --save: 将依赖保存到 dependencies 字段,表示这些包在生产环境下也是必须的。
  • --save-dev: 将依赖保存到 devDependencies 字段,表示这些包只在开发环境下需要。
# 安装并保存到生产依赖
npm install express --save# 安装并保存到开发依赖
npm install jest --save-dev

3. 运行脚本

NPM 允许在 package.json 中定义脚本,用于自动化常见的开发任务。

定义脚本 (scripts 字段)

package.json 中,你可以通过 scripts 字段定义各种命令脚本。这些脚本可以通过 npm run 运行。

{"scripts": {"start": "node index.js","test": "jest","build": "webpack","lint": "eslint ."}
}
运行脚本 (npm run)

要运行定义的脚本,可以使用 npm run <script-name>

# 运行 start 脚本
npm run start# 运行 test 脚本
npm run test# 运行 build 脚本
npm run build

对于 starttest 脚本,你可以省略 run 关键字,直接运行 npm startnpm test

常见脚本示例

一些常见的脚本定义和用途包括:

  • 启动服务器

    "scripts": {"start": "node server.js"
    }
    
  • 运行测试

    "scripts": {"test": "jest"
    }
    
  • 构建项目

    "scripts": {"build": "webpack --mode production"
    }
    
  • 代码风格检查

    "scripts": {"lint": "eslint ."
    }
    

4. 包管理

NPM 不仅是一个依赖管理工具,还可以用于发布和管理自己的 JavaScript 包。

发布包 (npm publish)

发布包到 NPM 仓库,让其他开发者可以安装和使用。

# 确保已经登录到 NPM
npm login# 发布当前目录下的包
npm publish

发布之前,请确保 package.json 文件配置正确,并且已经完成代码的所有必要准备工作。

版本控制 (npm version)

使用 npm version 命令可以自动更新 package.json 中的版本号,并为代码打上 Git 标签。

# 更新补丁版本 (1.0.0 -> 1.0.1)
npm version patch# 更新次版本号 (1.0.0 -> 1.1.0)
npm version minor# 更新主版本号 (1.0.0 -> 2.0.0)
npm version major
标记和发布标签 (npm tag)

在发布包时,你可以为不同版本的包打上标签,以便于管理和区分。

# 为当前版本添加一个标签
npm tag add my-package@1.0.0 beta# 查看包的所有标签
npm dist-tag ls my-package

5. 配置和调试

NPM 提供了一系列的命令,用于配置和调试 NPM 及其行为。

配置 NPM (npm config)

NPM 使用 .npmrc 文件存储配置,你可以通过 npm config 命令查看和修改这些配置。

# 查看所有配置
npm config list# 设置配置项
npm config set registry https://registry.npmjs.org/# 获取配置项的值
npm config get registry
查看和设置参数 (npm get, npm set)

npm getnpm set 命令允许你查看和设置单个配置项。

# 获取 registry 的值
npm get registry# 设置 registry 的值
npm set registry https://registry.npmjs.org/
调试 NPM (npm audit, npm cache)

NPM 提供了一些调试和优化命令,帮助你保持项目的健康和性能。

# 检查项目中的安全漏洞
npm audit# 修复可用的安全漏洞
npm audit fix# 清除 NPM 缓存
npm cache clean --force

这些命令帮助你识别和解决项目中的潜在问题,保持项目的健壮性和安全性。


总结

NPM 是一个强大的工具

,不仅仅是一个包管理器,它提供了从依赖管理、脚本执行、包发布到配置和调试的一整套功能。掌握这些常用的 NPM 命令和实践,能够极大地提高你在 JavaScript 项目开发中的效率和生产力。

相关文章:

NPM 常用命令

NPM 常用命令 NPM&#xff08;Node Package Manager&#xff09;是 JavaScript 生态系统中最流行的包管理工具&#xff0c;它不仅可以管理 Node.js 项目的依赖&#xff0c;还提供了丰富的命令来管理和发布你的代码。本文将从不同角度&#xff0c;深入浅出地介绍 NPM 的常用命令…...

C++进修——C++核心编程

内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制编码&#xff0c;由操作系统进行管理全局区&#xff1a;存放全局变量和静态变量以及常量栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&#xff…...

【信息系统项目管理师知识点速记】项目文档管理

19.3 项目文档管理 信息系统相关信息(文档)是指某种数据媒体和其中所记录的数据。文档具有永久性,并可以由人或机器阅读,通常用于描述人工可读的内容。在软件工程中,文档常常用来表示对活动、需求、过程或结果进行描述、定义、规定、报告或认证的任何书面或图示的信息(包…...

服务器硬件,raid配置

文章目录 服务器硬件RAID磁盘阵列RAID 0RAID 1RAID 5RAID 6RAID 10 阵列卡&#xff0c;阵列卡的缓存阵列卡阵列卡的缓存 软RAID磁盘阵列RAID阵列的管理及设备恢复mdadm 服务器硬件 处理器(CPU)&#xff1a;服务器的核心组件&#xff0c;负责执行计算和指令操作。服务器常使用多…...

fc-list命令使用指南

fc-list命令使用指南 一、什么是fc-list? fc-list是FontConfig库的一部分&#xff0c;最初为Linux和其他Unix-like系统开发。我们可以用这个命令行快速查询和列出系统中安装的字体。 现在&#xff0c;Windows用户也集成了这个工具&#xff0c;所以我们来讲解一下用法。 二、…...

NAS安全存储怎样实现更精细的数据权限管控?

NAS存储&#xff0c;即网络附属存储&#xff08;Network Attached Storage&#xff09;&#xff0c;是一种专用数据存储服务器&#xff0c;其核心特点在于将数据存储设备与网络相连&#xff0c;实现集中管理数据的功能。 NAS存储具有以下明显优势&#xff0c;而被全球范围内的企…...

第三十篇——等价性:如何从等价信息里找答案?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 知道了等价性的逻辑&#xff0c;通过等价性去衡量事物&#xff0c;像是给…...

RabbitMQ实践——搭建多人聊天服务

大纲 用户登录创建聊天室监听Stream&#xff08;聊天室&#xff09;发送消息实验登录Tom侧Jerry侧 创建聊天室Jerry侧Tom侧 进入聊天室Jerry侧Tom侧 发送消息Jerry发送消息Jerry侧聊天室Tom侧聊天室 Tom发送消息Jerry侧聊天室Tom侧聊天室 代码工程参考资料 在《RabbitMQ实践——…...

git分布式版本控制系统

Git - Downloads (git-scm.com) gitee教程&#xff08;超全&#xff0c;超详细&#xff0c;超长&#xff09;-CSDN博客 Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com) 所有的版本控制系统&#xff0c;其实只能跟踪文本文件改动&#xff0c;比如TXT文件&#xff0c;网页&…...

基于weixin小程序的民宿短租系统的设计与实现

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;房主管理&#xff0c;房间类型管理&#xff0c;用户管理&#xff0c;民宿信息管理&#xff0c;民宿预订管理&#xff0c;系统管理 小程序功能包括&#xff1a;系统首页&#xff0c;民宿信息&#xff0c…...

2024-06-22力扣每日一题

链接&#xff1a; 2663. 字典序最小的美丽字符串 题意 略 解&#xff1a; 要求字符串内不存在任何长度为 2 或更长的回文子字符串&#xff0c;则在任意位置不存在aa或aba形式 由于要被给定字符串字典序大&#xff0c;且找到符合条件的字典序最小字符串&#xff0c;则竟可…...

S_LOVE多端恋爱小站小程序源码 uniapp多端

S_LOVE多端恋爱小站小程序源码&#xff0c;采用uniapp多端开发框架进行开发&#xff0c;目前已适配H5、微信小程序版本。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89421726 更多资源下载&#xff1a;关注我。...

如何避免MySQL的死锁或性能下降

1、按顺序访问数据 确保多个线程或事务在访问多个表或行时&#xff0c;按照相同的顺序进行。这可以避免循环等待和资源竞争&#xff0c;从而降低死锁的风险。 2、避免长时间持有锁 尽量缩短事务的执行时间&#xff0c;避免长时间持有锁。长时间持有锁会增加其他事务等待的时…...

《C语言》编译和链接

文章目录 一、翻译环境1、预处理2、编译3、汇编4、链接 二、运行环境 一、翻译环境 在使用编译器编写代码时&#xff0c;编写的代码是高级语言&#xff0c;机器无法直接识别和运行&#xff0c;在编译器内部会翻译成机器可执行的机器语言。 编译环境由编译和链接两大过程组成。 …...

group by和select的兼容性问题

group by和select的兼容性问题 在标准的SQL语法中&#xff0c;GROUP BY 和 SELECT 之间不存在兼容性问题&#xff0c;因为它们是 SQL 查询语句的基本组成部分&#xff0c;而且它们的使用方式是相互兼容的。 SELECT 子句和 GROUP BY 子句的关系&#xff1a; SELECT 子句&#…...

切面aspect处理fegin调用转本地调用

切面处理fegin调用转本地调用 问题:原fegin调用转本地调用详细描述方案代码实现总结问题:原fegin调用转本地调用 项目原来是微服务项目服务与服务之间是通过fegin进行交互的,但是现在微服务项目要重构为单体项目,原fegin调用的方法要给为本地调用 详细描述 zyy-aiot │ …...

Linux 磁盘挂载与分区

Linux 磁盘挂载与分区 vda1: 其中vd表示虚拟磁盘&#xff0c;a表示第一块磁盘&#xff0c;b表示第二块磁盘&#xff0c;1表示第一块磁盘的第一分区&#xff08;显然两块磁盘都只有一个分区&#xff09;图中可以看到&#xff0c;vda1磁盘只有一个分区&#xff0c;且全部挂载到根…...

Open3D 将ShapeNet数据集txt转pcd

目录 一、概述 二、代码实现 三、实现效果 一、概述 ShapeNet 数据集是一个广泛使用的三维物体数据集&#xff0c;主要用于计算机视觉、计算机图形学、机器人学和机器学习等领域的研究。它包含大量的三维物体模型&#xff0c;并附有丰富的标注信息。ShapeNet 数据集由普林斯…...

综合项目实战--jenkins节点模式

一、DevOps流程 DevOps是一种方法论,是一系列可以帮助开发者和运维人员在实现各自目标的前提下,向自己的客户或用户交付最大化价值及最高质量成果的基本原则和实践,能让开发、测试、运维效率协同工作的方法。 DevOps流程(自动化测试部分) DevOps完整流程 二、gitee+j…...

WhaleStudio 2.6重磅发布!调度模块WhaleScheduler更新78项核心功能

我们很高兴地宣布WhaleStudio 2.6版本的正式发布&#xff01;新版本中包含了数据调度模块WhaleScheduler和数据集成模块WhaleTunnel的百余项核心功能更新&#xff0c;本文摘选了WhaleScheduler常用功能更新的概况&#xff0c;关于WhaleTunnel的更新详情将于近期发布&#xff0c…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...

前端开发者常用网站

Can I use网站&#xff1a;一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use&#xff1a;Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站&#xff1a;MDN JavaScript权威网站&#xff1a;JavaScript | MDN...

Spring AOP代理对象生成原理

代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】&#xff0c;这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...