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

相关推荐
sg_knight3 分钟前
VSCode如何修改默认扩展路径和用户文件夹目录到D盘
前端·ide·vscode·编辑器·web
一个处女座的程序猿O(∩_∩)O12 分钟前
完成第一个 Vue3.2 项目后,这是我的技术总结
前端·vue.js
mubeibeinv13 分钟前
项目搭建+图片(添加+图片)
java·服务器·前端
逆旅行天涯19 分钟前
【Threejs】从零开始(六)--GUI调试开发3D效果
前端·javascript·3d
m0_7482552640 分钟前
easyExcel导出大数据量EXCEL文件,前端实现进度条或者遮罩层
前端·excel
web147862107231 小时前
C# .Net Web 路由相关配置
前端·c#·.net
m0_748247801 小时前
Flutter Intl包使用指南:实现国际化和本地化
前端·javascript·flutter
飞的肖1 小时前
前端使用 Element Plus架构vue3.0实现图片拖拉拽,后等比压缩,上传到Spring Boot后端
前端·spring boot·架构
青灯文案11 小时前
前端 HTTP 请求由 Nginx 反向代理和 API 网关到后端服务的流程
前端·nginx·http
m0_748254882 小时前
DataX3.0+DataX-Web部署分布式可视化ETL系统
前端·分布式·etl