npm详解

NPM(Node Package Manager)是Node.js的包管理工具,用于管理和共享被发布到模块仓库的JavaScript代码.

NPM的定义 NPM是Node.js的默认包管理工具,它的功能包括安装、管理、卸载和发布开源模块。NPM提供了一个模块仓库,开发人员可以从仓库中下载已发布的模块到本地,并可以将自己开发的模块发布到仓库中供他人使用。
npm的组成

  • 网站
  • 注册表
  • 命令行工具

网站
npm的官方网站:http://www.npmjs.com
登录上去后,可以浏览和搜索模块。


列表中显示与搜索关键字相关的模块,每个列表项都会显示该模块的作者,发布时间,热度等等信息。


进入模块详细介绍页面,可以连接到github下载源码:


注册表(registry)
registry是个庞大的数据库,记录着每个包的信息。当我们再本地通过命令行工具下载或更新包时,都会到注册表中查找该模块的信息。
在命令行中可以查看注册表的地址:
npm config list
默认注册表地址:
http://registry.npmjs.com
不过这个地址对应的服务器在境外,国内连接的速度比较慢,可以选择国内的镜像地址:
npm config set registry=https://registry.npm.taobao.org
命令行工具
安装、更新包等操作都是用npm提供的命令行工具完成。
初始化package.json文件
npm init
在执行了该命令后,会提示输入项目的名称、版本号等信息,直接按回车键可按默认值来设置。
查看npm的相关配置
npm config list
查看所有npm中的默认配置
npm config ls -l
查看帮助信息
npm help npm help [子命令]
安装全局模块(install可以简写成i)
npm install -g 模块名 npm i -g 模块名
卸载全局模块
npm uninstall -g 模块名
安装本地模块
npm install 模块名
更新本地模块
npm update 模块名
卸载本地模块
npm uninstall 模块名
无论是安装还是更新模块,都可以在模块名后用@跟上版本号,来安装或更新指定版本的模块。
npm i ykt-mongo@1.2.3 npm i ykt-mongo@1.2

  • @1.2.3 - 表示下载1.2.3版本的模块
  • @1.2 - 表示下载主要版本号为1,次要版本号为2,补丁版本号为最后的一个版本。比如最后的补丁版本号为5,那么下载的就是1.2.5版本。

注意:如果下载或更新时后面不跟任何模块名,则下载或更新所有依赖的版本。
—save 和 —save-dev的区别
在安装本地模块时,加上—save或—save-dev参数时,模块信息会加入到package.json中,如:
npm i mockjs --save // package.json文件: { ... "dependencies": { "mockjs": "^1.0.1-beta3" } }
npm i mockjs --save-dev // package.json文件: { ... "devDependencies": { "mockjs": "^1.0.1-beta3" } }
这二者的区别就是在package.json中所处的位置不一样,—save是加入到”dependencies”属性下,—save-dev是加入到”devDependencies”属性下。
dependencies表示任何环境下都需要的依赖包。
devDependencies表示只有开发环境下才会需要的依赖包。
所以,如果你下载的模块是开发环境和生成环境下都要用到,那么就用—save。如果只是开发环境下用,那么就用—save-dev参数。比如单元测试要用到的模块。
—save-dev还有种缩写方式:
npm i -D 模块名
在npm5以后的版本中,默认不跟参数就相当于—save。
npx
npx命令是npm在5.2版本中加入的,实现了开发者在本地模块内执行命令。
比如使用express脚手架工具来生成项目的操作。
以前的方法:
// 在全局安装生成器工具
npm i -g express-generator //通过生成器生成项目 express test
使用npx:
npx express-generator test
下面我们来看看npx做了哪些事情?
首先npx会查找本地是否安装了express-generator模块。如果安装了,则继续查找其中可执行的文件。如果未找到,则到环境变量path中查找。如果还未找到,则帮你安装个临时的模块,用完就删掉,下次再用它还会去安装。我们这里用的生成器就是这种情况。
当然,你也可以先安装个本地的,然后通过npx去执行其中的命令。

比如:
npm i -D webpack npx webpack -v

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

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

相关文章

牛客网BC100有序序列合并

思路: 运用归并排序: 假设给定我们两个都是升序的数组,要求我们要把这两个数组以升序的方式合并到一个数组中,则我们就可以在这两个数组中分别各拿取一个元素进行比较,将二者之间较小值先放在这个新数组中&#xff0c…

记一次clickhouse启动报错

clickhouse一次排错 clickhouse启动报错 报错: Application: Code: 210. DB::Exception: Listen [::]:8123 failed: Poco::Exception. Code: 1000, e.code() 0, DNS error: EAI: Address family for hostname not supported (version 23.3.1.2823 (official bui…

一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程

MongoDB 是由C语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结…

腾讯科技Hi Tech Day暨2023数字开物大会:智能涌现将通往无数的未来

腾讯科技讯 12月14日,以“智能涌现 数开万物”为主题的腾讯科技Hi Tech Day暨2023数字开物大会在北京国家会议中心召开,腾讯科技邀请知名院士、知名经济学家、知名大学教授、研究院院长、产业大咖、互联网大厂高管、知名科技领域头部企业高管、产业数字化…

网络协议 - UDP 协议详解

网络协议 - UDP 协议详解 UDP概述UDP特点UDP的首部格式UDP校验 參考文章 基于TCP和UDP的协议非常广泛,所以也有必要对UDP协议进行详解。 UDP概述 UDP(User Datagram Protocol)即用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种…

【Spark精讲】Spark与MapReduce对比

目录 对比总结 MapReduce流程 ​编辑 MapTask流程 ReduceTask流程 MapReduce原理 阶段划分 Map shuffle Partition Collector Sort Spill Merge Reduce shuffle Copy Merge Sort 对比总结 Map端读取文件:都是需要通过split概念来进行逻辑切片&…

dbeaver导出数据为excel格式

dbeaver导出excel 目前数据的可选择只有这几种 恰好没有我们需要的excel模式,而我们需要数据一般都需要excel的 所以我们可以通过以下步骤得到我们的excel格式的数据集: 1.直接选csv模式,至于csv有陌生的小伙伴可以理解:CSV(Comma-Separated Values)是…

同时获取el-select的label和value

ui如下: 需求如下: 在点击确认的时候,将id和name都传给一个接口,但是ui只用展示name,name用v-model绑定给input框,但是id不知道怎么传给后端。 解决方法如下: vue中elementUi的el-select同时…

解决kernel32.dll丢失的修复方式,kernel32.dll预防错误的方法

kernel32.dll文件是电脑中的一个重要文件,如果电脑出现kernel32.dll丢失的错误提示,那么电脑中的一些程序将不能正常使用,那么出现这样的问题有什么解决办法呢?那么今天就和大家说说解决kernel32.dll丢失的修复方式。 一.kernel32…

MySql踩坑记录 DATE_FORMAT函数

使用场景:进行某一日期范围内的数据查询 查询结果:空,查询不到符合条件的数据。 Sql展示: SELECTa.dt_plan AS planDate,a.sd_status AS planStatus FROMc_hpl_plan a WHEREa.id_phr 6576727112f1a21849639530 -- 第一种写法…

STM32 寄存器配置笔记——I2C 读写AT24C02 EEPROM

一、简介 本文主要介绍STM32F10xx系列如何使用软件模拟I2C总线读写AT24C02的EEPROM数据。 二、概述 I2C协议是一种用于同步、半双工、串行总线(由单片机时钟线、单数据交换器数据线组成)上的协议。规定了总线空闲状态、起始条件、停止条件、数据有效性、字节格式、响应确认信号…

c# 为什么修改Font导致Location 变化

搜索引擎、各种人工智能,只有这个帮我解决了问题 然后我发现了这个 我就奇怪,一行行调试代码,最终发现设置Font,Location就变了,完全想不通

Linux 创建分区

要求 分一个区就行,用 ext4 文件系统,挂到 /data 目录。 查看 lsblk sdb 没有分区 创建分区 [rootlocalhost ~]# ll /dev/sd* brw-rw----. 1 root disk 8, 0 2月 27 15:10 /dev/sda brw-rw----. 1 root disk 8, 1 2月 27 15:10 /dev/sda1 brw-rw-…

【vue】jenkins打前端包时报错:第 8 行:cd: dist: 没有那个文件或目录

问题描述 jenkins打前端包时报错:第 8 行💿 dist: 没有那个文件或目录 Jenkins中 “Execute shell” 配置的脚本: echo $PATH node -v npm -v npm config set registry http://ued.edtsoft.com/ npm install npm run build:prod cd dist rm…

PostgreSQL向量数据插件--pgvector安装(附PostgreSQL安装)

PostgreSQL向量数据插件--pgvector安装 一、版本二、数据库安装1. 在官网下载PostgreSQL14.0的安装包2.增加用户postgres3.解压安装 三、pgvector安装1. 从github上克隆下来2. 安装pgvector插件3. 开始使用pgvector启用pgsql命令行创建扩展 本文为本人在安装pgvector中踩过的坑…

Github2023-12-15 开源项目日报 Top10

根据Github Trendings的统计,今日(2023-12-15统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目3非开发语言项目3JavaScript项目1Python项目1Rust项目1PHP项目1 基于项目的学习 创建周期&am…

【通用】Linux,VSCode,IDEA,Eclipse等资源相对位置

正文 不论是 IDEA、Linux、VSCode、cmd等等吧,都遵循这个规则: 如果以斜杠开头,表示从根开始找: IDEA的根是classpath(classpath就是项目被编译后,位于 target下的 classes文件夹,或者位于ta…

QT笔记(节选)具体图片等下载资源

QT笔记(节选)具体图片等下载资源 根据b站视频做的笔记: https://www.bilibili.com/video/BV1g4411H78N?p44&spm_id_frompageDriver&vd_sourcea3e6a48ccd3d7d1f969f662653ed68c9 qt是一个跨平台的c图形用户界面应用程序框架&#x…

编程导航算法通关村——算法基础

目录 1. 时间复杂度 1.1. 时间复杂度概念 1.2. 几种常见的阶 1.2.1. 常数阶 O(1) 1.2.2. 线性阶 O(n) 1.2.3. 平方阶 (n) 1.2.4. 对数阶 O(logn) 2. 最坏情况和平均情况 3. 空间复杂度 1. 时间复杂度 1.1. 时间复杂度概念 当我们说算法的时间复杂度时,我们…

【动手学深度学习】(十四)数据增广+微调

文章目录 一、数据增强1.理论知识2.代码 二、微调1.理论知识 一、数据增强 1.理论知识 增加一个已有数据集,使得有更多的多样性 在语言里面加入各种不同的背景噪音改变图片的颜色和形状 使用增强数据训练 翻转 左右翻转上下翻转 不总是可行 切割 从图片中切…