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

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

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

相关文章

用什么样的开源流程表单实现办公流程化?

近日,有不少热心网友询问道:如果要实现流程化办公,让整个办公效率火速提升上来,可以用什么样的开源流程表单工具?大伙都知道,随着低代码开发平台的盛行,办公效率也得到很大的提升,它…

RS®SMM100A 矢量信号发生器具备毫米波测试功能的中档矢量信号发生器

R&SSMM100A 矢量信号发生器 具备毫米波测试功能的中档矢量信号发生器 R&SSMM100A 矢量信号发生器在 100 kHz 至 44 GHz 的频率范围内提供优越的射频特性。这款仪器覆盖现有无线标准所使用的 6 GHz 以下的频段、新定义的最高 7.125 GHz 的 5G NR FR1 和 Wi-Fi 6E 频段以…

【算法与数据结构】53、LeetCode最大子数组和

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:程序一共两个变量,一个result一个count。result用来记录最终的结果,count记录当…

Redis——02,redis-benchmark 性能测试

redis-benchmark 性能测试 一、benchmark 性能测试。二、参数详解: 一、benchmark 性能测试。 在bin目录下,有一个redis-benchmark 工具,是用来测试性能的。 二、参数详解: http://doc.yaojieyun.com/www.runoob.com/redis/re…

通义千问 Qwen-72B-Chat在PAI-DSW的微调推理实践

01 引言 通义千问-72B(Qwen-72B)是阿里云研发的通义千问大模型系列的720亿参数规模模型。Qwen-72B的预训练数据类型多样、覆盖广泛,包括大量网络文本、专业书籍、代码等。Qwen-72B-Chat是在Qwen-72B的基础上,使用对齐机制打造的…

hive的分区表和分桶表详解

分区表 Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录,每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区,这样的查询效率会提高很多。 静态分区表基本语法 创建分区表 create table dept_p…

Date/Timestamp类型前端传空请求400

Timestamp类型字段前端传参空的 就请求400 集中解决方式: 1、直接页面干掉这几个字段不传 2、后端修改类型为String 3、前端请求前判断如果是空的就去掉 这边采用第三种解决的,在提交前去掉就行 // 移除空值字段 $(.showdiv input).each(function()…

1130 - Host “WIN-CA4FHERGO9J‘ is not allowed to connect to this MySQL server

1、知识小课堂 1.1 Mysql MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,属于Oracle旗下产品。它是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS (Relational Database Management System&am…

Flink+Kafka消费

引入jar <dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>1.8.0</version> </dependency> <dependency><groupId>org.apache.flink</groupId><artifactI…

迅为RK3568开发板使用OpenCV处理图像-ROI区域-位置提取ROI

在图像处理过程中&#xff0c;我们可能会对图像的某一个特定区域感兴趣&#xff0c;该区域被称为感兴趣区域&#xff08;Region of Interest, ROI&#xff09;。在设定感兴趣区域 ROI 后&#xff0c;就可以对该区域进行整体操作。 位置提取 ROI 本小节代码在配套资料“iTOP-3…

万户 OA OfficeServer.jsp 任意文件上传漏洞复现

0x01 产品简介 万户OA是面向政府组织及企事业单位的FlexOffice自主安全协同办公平台。 0x02 漏洞概述 万户OA OfficeServer.jsp接口存在任意文件上传漏洞,攻击者可通过该漏洞上传任意文件从而控制整个服务器。 0x03 复现环境 FOFA: (banner="OASESSIONID" &a…

机器人与3D视觉 Robotics Toolbox Python 二 空间位姿描述

空间位姿描述 二维空间位姿描述 二维空间位姿表示方法 from spatialmath.base import * from spatialmath import * T1 SE2(x3,y3,theta30,unit"deg") trplot2(T1.A,frame"T1",dims[0, 5, 0, 5]) T2transl2(3, 4) trplot2(T2,frame"T2",dims…