自学内容网 自学内容网

npm介绍、常用命令详解以及什么是全局目录

目录

npm介绍、常用命令详解以及什么是全局目录

在这里插入图片描述

一、介绍

npm(Node Package Manager)是一个随Node.js一起安装的包管理工具,由Isaac Z. Schlueter(通常简称为izs)领导开发。它是一个命令行工具,用于安装、管理和发布Node.js程序包。npm允许开发者将代码分割成不同的模块,并共享到npm的在线仓库(npm registry),这样其他开发者就可以方便地使用这些模块。

npm的主要功能

  1. 安装包:使用npm install命令可以安装单个包或整个依赖树。
  2. 发布包:开发者可以通过npm publish命令将自己的包发布到npm仓库。
  3. 更新包:使用npm update可以更新已安装的包到最新版本。
  4. 搜索包:通过npm search可以查找特定的包或浏览npm仓库中的包。
  5. 查看包信息:使用npm view命令可以查看包的详细信息,如版本、描述和维护者等。
  6. 全局命令:npm还提供了一系列全局命令,例如npm install -g用于全局安装包,使之可以在任何项目中使用。
  7. 依赖管理:npm不仅管理包的安装,还负责解析依赖关系,确保项目所依赖的包及其依赖的包都是正确的版本。

npm仓库

截至2023,npm仓库是世界上最庞大的软件注册表,拥有超过800,000个包。任何人都可以创建账户并发布自己的包。npm仓库的包分为公开的和私有的。公开的包可以被任何人访问,而私有的包则需要特定权限才能访问。

npm的配置

npm提供了一个package.json文件来定义项目依赖和配置信息。这个文件是Node.js项目的入口点,它描述了项目需要哪些外部包以及如何使用它们。

npm的版本控制

npm使用语义版本控制(Semantic Versioning),每个版本的包都会按照主版本号.次版本号.修订号的格式来定义。这样的版本号系统有助于清晰地表达包的更改内容和兼容性。
npm作为Node.js生态系统的重要组成部分,极大地推动了JavaScript单页应用(SPA)和服务器端应用程序的发展。通过提供方便的模块共享和管理机制,它让开发者能够更加高效地开发和维护大型应用程序。。以下是一些常用的npm命令和示例:

二、命令

1. npm init: 初始化一个新的Node.js项目,创建package.json文件。package.json是一个描述项目信息和依赖关系的文件。

示例:


mkdir my_project
cd my_project
npm init

2. npm install <package_name>: 安装一个Node.js模块。这将把模块安装到node_modules目录下,并添加到package.json的依赖项中。

示例:


npm install express

3. npm install: 安装package.json中列出的所有依赖项。

示例:


cd my_project
npm install

4. npm install -g <package_name>: 全局安装一个Node.js模块。这使得模块可以在任何地方使用。

示例:


npm install -g nodemon

5. npm uninstall <package_name>: 卸载一个已安装的Node.js模块。

示例:


npm uninstall express

6. npm update: 更新所有已安装的模块到最新版本。

示例:


cd my_project
npm update

7. npm outdated: 列出所有过时的已安装模块。

示例:


cd my_project
npm outdated

8. npm list: 列出项目中安装的所有模块。

示例:


cd my_project
npm list

9. npm run <script>: 运行package.json中的一个脚本。你可以在scripts字段中定义脚本。

示例:


// package.json中的"scripts"字段
"scripts": {
  "start": "node app.js",
  "test": "mocha"
}

// 运行脚本
npm run start
npm run test

10. npm install --save-dev <package_name>: 以开发依赖的形式安装一个Node.js模块。这些依赖项仅在开发和测试时需要,而在生产环境中不需要。

示例:


npm install --save-dev mocha

11. npm config: 用于查看和修改npm的配置。可以通过npm config list查看当前配置,通过npm config set <key> <value>设置配置,通过npm config delete <key>删除配置。

示例:


npm config list
npm config set registry https://registry.npm.taobao.org
npm config delete registry

12. npm link: 创建一个当前模块的符号链接。这在本地开发和测试模块时非常有用,因为它允许您在不发布模块的情况下,在其他项目中使用它。

示例:


cd my_module
npm link
cd ../my_project
npm link my_module

13. npm search <keyword>: 搜索与关键词相关的Node.js模块。

示例:


npm search express

14. npm view <package_name> [field]: 查看一个Node.js模块的详细信息。可以通过指定字段来查看特定信息。

示例:


npm view express
npm view express version

15. npm cache: 管理npm的缓存。可以通过npm cache clean --force清空缓存,通过npm cache verify验证缓存的完整性。

示例:


npm cache clean --force
npm cache verify

16. npm loginnpm logout: 登录和登出npm。登录后,您可以发布自己的模块或修改已发布模块的信息。

示例:


npm login
npm logout

17. npm publishnpm unpublish: 发布和取消发布Node.js模块。这需要您已经登录npm。

示例:


cd my_module
npm publish
npm unpublish my_module@1.0.0

18. npm install参数有哪些,详细解释,用案例解释。输出案例结果并解释

  • npm install命令有很多可选参数,可以用来修改安装行为。以下是一些常用的参数及其解释和示例:
(1) -g--global:全局安装模块。将模块安装到全局目录,使其在任何地方都可以使用。

示例:


npm install -g express

安装express模块到全局目录,之后可以在任何项目中使用它。

(2) --save-S:将模块保存为项目的依赖。这是默认行为,不需要显式添加该参数。

示例:


npm install lodash

lodash模块安装为项目的依赖。结果会将lodash添加到package.json文件的dependencies字段中。

(3) --save-dev-D:将模块保存为项目的开发依赖。开发依赖仅在开发和测试时需要,生产环境中不需要。

示例:


npm install -D mocha

mocha模块安装为项目的开发依赖。结果会将mocha添加到package.json文件的devDependencies字段中。

(4) --no-save:不将模块保存到package.json文件。安装模块,但不修改package.json

示例:


npm install moment --no-save

安装moment模块,但不将其添加到package.json文件。

(5) --save-exact-E:精确安装模块的指定版本。将确切的版本号添加到package.json文件,而不是使用版本范围。

示例:


npm install express@4.17.1 --save-exact

安装express模块的4.17.1版本,并将精确的版本号添加到package.json文件。

(6) --save-optional-O:将模块保存为项目的可选依赖。可选依赖项是在安装失败时不会导致整个安装过程失败的依赖项。

示例:


npm install -O fsevents

fsevents模块安装为项目的可选依赖。结果会将fsevents添加到package.json文件的optionalDependencies字段中。

(7)--dry-run:模拟安装过程。不实际执行安装,但显示将要执行的操作。

示例:


npm install express --dry-run

显示安装express模块的过程,但实际上不执行安装。这有助于了解将要进行的操作,而不会对项目产生实际影响。

(8) --legacy-peer-deps:忽略对等依赖项的版本冲突。在某些情况下,可能会遇到对等依赖项版本冲突的问题。使用--legacy-peer-deps参数可以忽略这些冲突,继续安装。

示例:


npm install react-scripts --legacy-peer-deps
(9)安装react-scripts模块,即使存在对等依赖项版本冲突,也继续执行安装。

--force-f:强制安装模块。如果已经存在缓存或安装的模块,忽略它们,强制重新安装。

示例:


npm install lodash --force
(10)强制安装lodash模块,忽略已存在的缓存和已安装的模块。
- --production:仅安装项目的生产依赖项。跳过安装devDependencies字段中的模块。

示例:


npm install --production
- 仅安装package.json文件中dependencies字段中列出的模块,跳过devDependencies中的模块。

--ignore-scripts:安装模块时,不运行package.json中的脚本。某些模块在安装过程中可能会运行脚本,这个参数可以阻止这些脚本的执行。

示例:


npm install express --ignore-scripts

安装express模块,但不执行任何与之相关的脚本。

了解这些npm install参数可以帮助您在不同情况下灵活地安装和管理Node.js模块。根据项目需求和实际情况选择合适的参数来优化安装过程。

三、什么是全局目录?

  • -g 或 --global:全局安装模块。将模块安装到全局目录,使其在任何地方都可以使用。

1. 这里的全局目录是什么

-g 或 --global:全局安装模块。将模块安装到全局目录,使其在任何地方都可以使用。全局目录是什么

  • 全局目录是一个特殊的目录,用于存储全局安装的Node.js模块。当你使用-g--global参数安装模块时,模块将被安装到全局目录。全局安装的模块可以在任何地方使用,而不仅仅局限于某个特定的项目目录。

全局目录的位置因操作系统和Node.js的安装方式而异。要查找全局目录的位置,可以运行以下命令:


npm root -g

这将返回全局node_modules目录的路径。以下是一些常见操作系统上的全局目录示例:

  • Windows:全局目录通常位于C:\Users\<用户名>\AppData\Roaming\npm\node_modules
  • macOS/Linux:全局目录通常位于/usr/local/lib/node_modules/usr/lib/node_modules

请注意,根据你的系统设置和Node.js的安装方式,这些路径可能会有所不同。通过运行npm root -g命令,你可以获得准确的全局目录路径。

全局安装的模块主要用于命令行工具或可在多个项目中共享的公共库。在使用全局模块时,不需要为每个项目单独安装,而是可以直接在命令行中使用这些模块的命令或在Node.js代码中引用它们。

2. 如何设置全局目录

  • 设置Node.js全局目录可以通过修改npm的配置来实现。以下是如何设置全局目录的步骤:
(1) 打开终端或命令提示符。
(2) 运行以下命令来查看当前的全局目录:

npm config get prefix
(3) 若要设置新的全局目录,请运行以下命令,将<new_path>替换为你希望将全局目录设置为的新路径:

npm config set prefix <new_path>

示例:


npm config set prefix /Users/yourusername/.npm-global
(4) 更新系统环境变量以包含新的全局目录。这样,当你全局安装模块时,命令行工具就可以找到它们。
  • Windows:编辑系统环境变量,将新的全局目录添加到Path变量中。
  • macOS/Linux:在你的~/.bashrc(或相应的配置文件,如~/.zshrc)中添加以下行:

export PATH=<new_path>/bin:$PATH

<new_path>替换为你在第3步中设置的全局目录。

(5) 保存更改并重启终端或命令提示符。

通过这些步骤,你可以更改Node.js全局目录。在执行全局安装时,模块将安装到新的全局目录,并且命令行工具将能够找到这些模块。

请注意,在修改全局目录时,请确保具有所需的权限,以便在新目录中安装模块。在某些情况下,可能需要使用管理员权限执行命令。


原文地址:https://blog.csdn.net/weixin_48053866/article/details/139029381

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!