npm 包管理工具

简介

Node官网:https://nodejs.org/
Npm官网:https://www.npmjs.com/

在现代的软件开发世界中,包管理工具起着至关重要的作用。它们为开发者社区提供了一种高效共享和使用代码的方式。在 JavaScript 的范畴内,npm(Node Package Manager)伫立在这一领域的前沿,成为了开发者在进行Web开发时不可或缺的工具之一。

npm 的诞生和崛起

npm是为Node.js设计的包管理器,由Isaac Z. Schlueter于2010年创立,它允许用户从npm仓库安装、分享、分发代码,并管理项目依赖性。如今,它已经成为世界上最大的软件注册表,拥有超过百万个包,为全球JavaScript程序员提供服务。

什么是包管理工具?

在深入探索npm之前,有必要理解“包管理工具”的概念。简单地说,包管理工具是一个允许开发者创建、分享、使用软件包的平台。软件包是一个包含代码、资源和元数据的文件集合,它们提供一种固化和封装功能、库和框架的方式。
还有哪些包管理工具?
yarnbower

npm 的核心特性

1. 依赖管理

npm让管理项目的依赖成为一个轻而易举的事。通过编辑package.json文件,开发者可以精确地指定依赖版本,npm会自动处理安装和更新。

2. 脚本运行

除了管理依赖,npm还允许开发者在package.json中定义脚本,这可以简化许多常见的开发任务,如启动应用、运行测试或者编译源代码。

3. 社区支持

npm的一个重要特性是其广泛的社区支持。无论你需要什么,你总能在npm中找到别人已经构建好的解决方案。

npm 和 Node.js

使用npm的主要场景之一是与Node.js结合。Node.js允许JavaScript运行在服务器端,而npm则为它提供了必要的第三方包支持,使得开发现代Web应用成为可能。

如何使用 npm?

安装和配置

安装Node.js会自动安装npm。一旦安装完成,你就可以使用npm命令行工具来安装、更新、删除包了。
https://nodejs.org/en/download
在这里插入图片描述

查看版本

node -v
npm -v

常用命令

查看npm的配置列表

npm config list

获取某一项配置

#获取包全局安装路径的前缀(-g全局安装在此目录,未指定全局安装在当前目录)
npm config get prefix
#获取包安装时缓存的路径
npm config get cache
#获取npm仓库地址
npm config get registry

配置使用国内仓库地址

第一种方法:使用cnpm代替npm

#安装cnpm后,用到npm的地方直接用cnpm代替即可
npm install cnpm -g --registry=https://registry.npm.taobao.org
#验证一下
cnpm config get registry

第二种方法:修改npm的仓库地址

#会生成npm的配置文件(C:\Users\ZZZYY\目录下的.npmrc),可查看验证
npm config set registry https://registry.npm.taobao.org
#验证一下
npm config get registry

注意:rc后缀的文件多是配置文件,可以看做run command的缩写。

如何修改全局安装路径?

第一步:在.npmrci配置文件中新增如下内容:

prefix=E:\npm\repo_node\npm
cache=E:\npm\repo_node\npm_cache

第二步: 修改环境变量path增加:

E:\npm\repo_node\npm

初始化新项目

通过运行npm init,你可以为你的项目创建一个package.json文件,这是管理项目依赖的起点。

安装包

要为项目添加一个新包,可以使用npm install <package-name>命令。这不仅会下载包,还会将其添加到你的package.json文件中。

保存了项目依赖的各种包,从git clone下来项目之后,直接使用npm install即可安装所有依赖,不需要把真正的依赖上传。

npm 的未来

npm持续在演进。最新版本带来了更快的性能,更好的安全性和更简洁的用户体验。随着JavaScript生态的不断发展,npm也在不断地扩展其功能以满足日益增长的需求。

npm常用命令

https://www.npmjs.com/

#按package.json中的配置来安装
npm i
#查看当前目录下已安装的第三方包,加-g查看全局的
npm list
#查看某个包在仓库有哪些可用版本
npm view jquery versions
#安装jquery的最新版本,全局安装加-g
npm i jquery
#安装指定版本
npm i jquery@1.11.1

package.json中^~的区别:

  • ^1.11.1:选取范围<2.0.0且>=1.11.1
  • ~1.11.1:安装最新的小版本,1.11.x,选取最大的

package-lock.json

  • 锁定了具体的版本,避免语义版本带来项目bug。
  • 通过命令行操作软件包时此文件会根据package.json的内容自动被npm修改,不要自己修改这个文件。

当package-lock.json和package.json一致时,npm i根据package-lock.json来,否则根据package.json来并同步更新到package-lock.json中

#保存到开发依赖节点(添加--save-dev/-D选项),默认保存到运行时依赖(即默认加了--save/-S)
npm install webpack webpack-cli -D
#清理npm安装的缓存,实际上清理的是你配置的缓存目录(E:\npm\ repo_node\npm_cache)
npm cache clean --force
#删除某个包,删除全局的-g
npm uninstall jquery
#更新某个包到最新版本
npm update jquery
#运行脚本,xXX是你在package.json的scripts标签里面定义的命令,名字随便。
npm run xxx

注意:xxx对应的命令会优先使用局部安装的包,如:

npm install webpack webpack-cli -g
npm install webpack@3.6.0 -D

此时通过webpack-v查看到的是全局的webpack的版本,如何查看本项目依赖的webpack版本呢?

怎么使用

在没结合webpack之前,跟原来一样,从node_modules目录下找即可

结语

npm是每一位JavaScript开发者技能树上的基础。它简化了复杂的依赖管理问题,使得共享以及使用开源代码变得前所未有地容易。正是有了npm这样的工具,我们才能站在巨人的肩膀上进行更为创新和高效的软件开发。

无论你是一个初学者,还是一个经验丰富的工程师,投入时间去深入理解npm都是一项值得的投资。对于未来,npm将继续赋能给那些愿意探索JavaScript世界无限可能的人。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

展台设计搭建中6个关键元素

一、哪种风格的会展展台设计更显示设计感 从已有的展台布置局面可以看出&#xff0c;不同展台设计有着不同的标准与选择原则&#xff0c;现有的一系列展台设计标识会随着现代化会展的提升重新进入更新诉求阶段。 二、展台设计一般会有那种可以选择的类别 从出现在展台设计优化阶…

【MySQL】MySQL库

使用C/C语言链接MySQL 一、mysql connect二、mysql 接口介绍1. 初始化 mysql_init()2. 链接数据库 mysql_real_connect()3. 执行 mysql 命令 mysql_query()4. 获取执行结果 mysql_store_result()5. 释放空间5. 关闭 mysql 链接 mysql_close() 一、mysql connect 要使用C语言连…

字节大佬含泪吐血总结系列之 应用层常见协议

字节大佬含泪吐血总结系列之 应用层常见协议 原文地址&#xff1a;https://github.com/Snailclimb/JavaGuide 文章目录 字节大佬含泪吐血总结系列之 应用层常见协议HTTP:超文本传输协议Websocket&#xff1a;全双工通信协议SMTP:简单邮件传输(发送)协议POP3/IMAP:邮件接收的协…

Jmeter高级使用

文章目录 JMeter之计数器JMeter之集合点JMeter之断言JMeter之动态关联后置处理器&#xff1a;正则表达式提取器 JMeter之分布式测试JMeter之组件执行顺序元件的作用域元件的执行顺序配置元件Http Cookie管理器 多协议接口的性能测试Debug采样器Http请求中文乱码的解决Post参数设…

cip、ethernet/ip开源协议栈:开发源代码

EtherNet/IP是一个工业以太网协议&#xff0c;它结合标准协议TCP和UDP&#xff0c;在以太网上基础上的通用工业协议&#xff08;CIP&#xff09;。 该协议由ODVA维护。ODVA还管理其他CIP实现&#xff0c;如DeviceNet。 协议栈和源代码下载 www.jngbus.com 在开发Ethernet/Ip…

如何在CentOS安装DataEase数据分析服务并实现远程访问管理界面

如何在CentOS安装DataEase数据分析服务并实现远程访问管理界面 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 202…

QSqlRelationalTableModel 关系表格模型

一、 1.1 QSqlRelationalTableModel继承自QSqlTableModel&#xff0c;并且对其进行了扩展&#xff0c;提供了对外键的支持。一个外键就是一个表中的一个字段 和 其他表中的主键字段之间的一对一的映射。例如&#xff0c;“studInfo”表中的departID字段对应的是“departments…

【SpringCloud】使用OpenFeign进行微服务化改造

目录 一、需求与背景二、OpenFeign 远程调用技术原理三、项目代码演示3.1 引入依赖3.2 实现OpenFeign注解修饰接口3.3 指定 OpenFeign 远程调用接口的扫描路径 四、OpenFeign 在日志中打印Request和Response五、OpenFeign 客户端超时配置六、使用 OpenFeign 实现服务降级6.1 实…

【python】OpenCV—Tracking(10.1)

学习来自《Learning OpenCV 3 Computer Vision with Python》Second Edition by Joe Minichino and Joseph Howse 文章目录 检测移动的目标涉及到的 opencv 库cv2.GaussianBlurcv2.absdiffcv2.thresholdcv2.dilatecv2.getStructuringElementcv2.findContourscv2.contourAreacv2…

STM32 IIC电量计LTC2944

1 描述 LTC2944 可在便携式产品应用中测量电池充电状态、电池电压、电池电流及其自身温度。宽输入电压范围允许使用高达 60V 的多节电池。精密库仑反向积分电流通过电池正极端子与负载或充电器之间的检测电阻器。 电压、电流和温度由内部 14 位无延迟 ΔΣ™ ADC 测量。测量结…

09-信息收集-APP及其他资产等

信息收集-APP及其他资产等 信息收集-APP及其他资产等一、APP提取季抓包及后续配合1、某APK一键提取反编译2、利用bp抓取更多URL 二、某IP无web框架下的第三方测试1、各种端口一顿乱扫 —— 思路2、各种接口一顿乱扫 —— 思路3、接口部分一顿测试 —— 思路 三、**案例演示**1、…

KubeSphere 社区双周报|Fluent Bit 升级到 v2.2.2|2024.01.18-02.01

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2024.01.18-02.01…

新加坡大带宽服务器优势特点

随着互联网技术的不断进步&#xff0c;大带宽服务器在满足高速数据传输需求方面发挥着越来越重要的作用。新加坡&#xff0c;作为全球互联网基础设施的重要枢纽&#xff0c;其大带宽服务器在全球范围内备受关注。本文将深入探讨新加坡大带宽服务器的优势特点&#xff0c;以及如…

【Python基础】Numpy使用指南

文章目录 Numpy使用指南1 numpy简介2 numpy安装3 ndarray3.1 ndarry轴与秩3.2 ndarray 相关属性3.3 创建 ndarray 对象3.4 np.radom相关方法3.5 reshape方法3.6 ndarray对象转其他数据结构 4 numpy的数据类型5 numpy访问与修改5.1 一维array5.2 numpy中的轴 6 numpy计算6.1 基本…

Methodot低代码实战教程(一)——熟悉可视化Echart组件

一、产品介绍&#xff1a; Methodot是行云创新旗下一款面向研发使用的一站式云原生开发及应用托管平台&#xff0c;产品内有大量开箱即用的服务和开发工具&#xff0c;例如&#xff1a; 支持开发团队进行微服务架构设计&#xff08;例如一个袜子商店管理系统&#xff09;&…

病原菌共感染研究思路

近年来,多微生物共感染在临床上的报道日益增多。其中,多细菌共感染占据了细菌感染的25% ,其发病率和严重性也相应增加。尤其在形成生物膜后,这种共感染对疾病的发生、发展和临床治疗生重要影响,同时也给临床治疗带来了更大的挑战。 随着测序的发展&#xff0c;应用高通量转录组…

Java黑马——拼图小游戏

拼图小游戏&#xff08;GUI&#xff09; AWT包会有些兼容问题&#xff0c;不支持某些中文 在本次游戏的GUI开发中&#xff0c;我们将使用Swing包 一、主界面分析 这些东西统一称为组件&#xff0c;JFrame是一个组件、JMenuBar也是一个组件、等等 1、练习一&#xff1a;创建主…

离线生成双语字幕,一键生成中英双语字幕,基于AI大模型,ModelScope

离线生成双语字幕整合包,一键生成中英双语字幕,基于AI大模型 制作双语字幕的方案网上有很多&#xff0c;林林总总&#xff0c;不一而足。制作双语字幕的原理也极其简单&#xff0c;无非就是人声背景音分离、语音转文字、文字翻译&#xff0c;最后就是字幕文件的合并&#xff0c…

AI大模型开发架构设计(7)——人人都需要掌握的AI编程及应用案例实战

文章目录 人人都需要掌握的AI编程及应用案例实战1 AI代码生成模型与AI编程助手介绍程序设计方式的发展自动代码生成AI编程工具 2 AI编程助手的代码生成模型架构剖析以 CodeGeeX 为例-发展过程以 CodeGeeX 为例-训练过程以 CodeGeeX 为例-大规模代码数据处理以 CodeGeeX 为例-模…

消息中间件特性

一&#xff1a;消息队列的主要作用是什么&#xff1f; 1.消息队列的特性&#xff1a; 业务无关&#xff0c;一个具有普适性质的消息队列组件不需要考虑上层的业务模型&#xff0c;只做好消息的分发就可以了&#xff0c;上层业务的不同模块反而需要依赖消息队列所定义的规范进行…