Node.js - 包管理器 (NPM)



NPM - Node Package Manager的首字母缩写,是指命令行实用程序,用于安装Node.js包,执行版本管理和Node.js包的依赖性管理。它还为node.js包/模块提供了一个在线存储库,这些包/模块可以在 https://www.npmjs.com/ 上搜索。此链接上还提供了 NPM 命令的详细文档。

如果您使用的是较新版本的 Node.js(版本 0.6.0 或更高版本),则 NPM 实用程序包含在所有操作系统平台捆绑包的Node.js二进制文件中。在命令终端中检查NPM的版本 -


PS C:\Users\mlath> npm -v
10.1.0

如果您有旧版本的 NPM,则需要使用以下命令将其更新到最新版本。

npm install npm -g

请注意,YARN 和 PNPM 工具也可用作 NPM 的替代方案。YARN 可以更快地安装包,并在计算机之间或在安全的离线环境中一致地管理依赖项。PNPM(高性能 NPM)是另一个用于Node.js包的快速且磁盘空间高效的包管理器。

如果您的 Node.js 应用程序依赖于一个或多个外部包,则必须从 NPM 存储库安装它们。NPM 包以两种模式安装:本地或全局。默认情况下,包在本地安装。

在本地安装包

有一个简单的语法来安装任何Node.js模块 -

npm install <Module Name>

例如,以下是安装一个名为 express 的著名 Node.js Web 框架模块的命令 -

npm install express

现在你可以在你的js文件中使用这个模块,如下所示 -


 var express = require('express');

包的本地模式安装是指在位于 Node 应用程序所在的文件夹中的目录中node_modules包安装。本地部署的包可以通过 require() 方法访问。在 install 命令的末尾使用 --save 将依赖项条目添加到应用程序的package.json中。

package.json文件是一个 JSON 文件,用于管理Node.js项目中的依赖项。它包含有关项目的信息,例如其名称、版本和依赖项。npm 包管理器使用 package.json 文件来安装和管理依赖项。

package.json文件通常位于 Node.js 项目的根目录中。可以通过运行 npm init 命令来创建它。

为新的Node.js项目创建一个新文件夹,并在其中运行 pnm init 命令 -


 PS D:\nodejs\newnodeapp> npm init

此实用程序将指导您创建package.json文件。


It only covers the most common items, and tries to guess sensible defaults.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.

package name: (newnodeapp) newnodeapp
version: (1.0.0)
description: Test Node.js App
entry point: (index.js)
test command:
git repository:
keywords: test, nodejs
author: mvl
license: (ISC)

即将写入 D:\nodejs\NewNodeApp\package.json -


{
	 	"name": "newnodeapp",
	 	"version": "1.0.0",
	 	"description": "Test Node.js App",
	 	"main": "index.js",
	 	"scripts": {
	 	 	 "test": "echo \"Error: no test specified\" && exit 1"
	 	},
	 	"keywords": [
	 	 	 "test",
	 	 	 "nodejs"
	 	],
	 	"author": "mvl",
	 	"license": "ISC"
}

现在,如果我们在这个项目中将 express 包本地安装到这个包中,使用以下命令,它也会在package.json中添加依赖项。

D:\nodejs\newnodeapp>npm install express –save

此文件夹中的package.json文件将更新为 -


{
	 	"name": "newnodeapp",
	 	"version": "1.0.0",
	 	"description": "Test Node.js App",
	 	"main": "index.js",
	 	"scripts": {
	 	 	 "test": "echo \"Error: no test specified\" && exit 1"
	 	},
	 	"keywords": [
	 	 	 "test",
	 	 	 "nodejs"
	 	],
	 	"author": "mvl",
	 	"license": "ISC",
	 	"dependencies": {
	 	 	 "express": "^4.18.2"
	 	}
}

快速包裹代码将被放置在包裹文件夹的 node_modules 子文件夹中。

如果您已经将所有项目依赖项放在 package.json 文件中,则只需运行 npm install(前面没有任何包名称)即可立即安装所有依赖项

您还可以在 npm install 命令中使用 -save-dev 标志将包添加为 DevDepndency。

  • --save-dev 安装该条目并将其添加到package.json文件 devDependencies
  • --no-save 会安装但不会将条目添加到package.json文件依赖项中
  • --save-optional 安装并将条目添加到package.json文件 optionalDependencies
  • --no-optional 将阻止安装可选依赖项

也可以使用标志的简写 -

  • -S: --save
  • -D:--save-dev
  • -O:--save-optional

devDependencies 和 dependencies 的区别在于,前者包含开发工具,如测试库,而后者则与生产中的应用程序捆绑在一起。

全局安装软件包

全局安装的包/依赖项存储在系统目录中。这种依赖可以在任何node.js的 CLI(命令行界面)功能中使用,但不能直接在 Node 应用程序中使用 require() 导入。现在,让我们尝试使用全局安装来安装 express 模块。

npm install express -g

这将产生类似的结果,但模块将在全球范围内安装。在 Linux 上,全局包放在 /usr/lib/node_modules 文件夹中,而对于 Windows,路径是 C:\Users\your-username\AppData\Roaming\npm\node_modules。

更新包

若要更新Node.js项目中本地安装的包,请在项目项目文件夹中打开命令提示符或终端,并编写以下更新命令。

npm update <package name>

以下命令会将现有的 ExpressJS 模块更新到最新版本。


PS D:\nodejs\newnodeapp> npm update express

up to date, audited 63 packages in 2s

11 packages are looking for funding
	 run `npm fund` for details

found 0 vulnerabilities

卸载软件包

若要从项目的依赖项中卸载包,请使用以下命令从项目中删除本地包。

npm uninstall <package name>

以下命令将从应用程序中卸载 ExpressJS。


PS D:\nodejs\newnodeapp> npm uninstall express
removed 62 packages, and audited 1 package in 603ms
found 0 vulnerabilities

包条目也将从package.json文件的依赖项列表中删除。