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

news2024/11/25 0:38:24

目录

  • npm介绍、常用命令详解以及什么是全局目录
    • 一、介绍
      • npm的主要功能
      • npm仓库
      • npm的配置
      • npm的版本控制
    • 二、命令
      • 1. `npm init`: 初始化一个新的Node.js项目,创建`package.json`文件。`package.json`是一个描述项目信息和依赖关系的文件。
      • 2. `npm install <package_name>`: 安装一个Node.js模块。这将把模块安装到`node_modules`目录下,并添加到`package.json`的依赖项中。
      • 3. `npm install`: 安装`package.json`中列出的所有依赖项。
      • 4. `npm install -g <package_name>`: 全局安装一个Node.js模块。这使得模块可以在任何地方使用。
      • 5. `npm uninstall <package_name>`: 卸载一个已安装的Node.js模块。
      • 6. `npm update`: 更新所有已安装的模块到最新版本。
      • 7. `npm outdated`: 列出所有过时的已安装模块。
      • 8. `npm list`: 列出项目中安装的所有模块。
      • 9. `npm run <script>`: 运行`package.json`中的一个脚本。你可以在`scripts`字段中定义脚本。
      • 10. `npm install --save-dev <package_name>`: 以开发依赖的形式安装一个Node.js模块。这些依赖项仅在开发和测试时需要,而在生产环境中不需要。
      • 11. `npm config`: 用于查看和修改npm的配置。可以通过`npm config list`查看当前配置,通过`npm config set <key> <value>`设置配置,通过`npm config delete <key>`删除配置。
      • 12. `npm link`: 创建一个当前模块的符号链接。这在本地开发和测试模块时非常有用,因为它允许您在不发布模块的情况下,在其他项目中使用它。
      • 13. `npm search <keyword>`: 搜索与关键词相关的Node.js模块。
      • 14. `npm view <package_name> [field]`: 查看一个Node.js模块的详细信息。可以通过指定字段来查看特定信息。
      • 15. `npm cache`: 管理npm的缓存。可以通过`npm cache clean --force`清空缓存,通过`npm cache verify`验证缓存的完整性。
      • 16. `npm login`和`npm logout`: 登录和登出npm。登录后,您可以发布自己的模块或修改已发布模块的信息。
      • 17. `npm publish`和`npm unpublish`: 发布和取消发布Node.js模块。这需要您已经登录npm。
      • 18. npm install参数有哪些,详细解释,用案例解释。输出案例结果并解释
        • (1) `-g` 或 `--global`:全局安装模块。将模块安装到全局目录,使其在任何地方都可以使用。
        • (2) `--save` 或 `-S`:将模块保存为项目的依赖。这是默认行为,不需要显式添加该参数。
        • (3) `--save-dev` 或 `-D`:将模块保存为项目的开发依赖。开发依赖仅在开发和测试时需要,生产环境中不需要。
        • (4) `--no-save`:不将模块保存到`package.json`文件。安装模块,但不修改`package.json`。
        • (5) `--save-exact` 或 `-E`:精确安装模块的指定版本。将确切的版本号添加到`package.json`文件,而不是使用版本范围。
        • (6) `--save-optional` 或 `-O`:将模块保存为项目的可选依赖。可选依赖项是在安装失败时不会导致整个安装过程失败的依赖项。
        • (7)`--dry-run`:模拟安装过程。不实际执行安装,但显示将要执行的操作。
        • (8) `--legacy-peer-deps`:忽略对等依赖项的版本冲突。在某些情况下,可能会遇到对等依赖项版本冲突的问题。使用`--legacy-peer-deps`参数可以忽略这些冲突,继续安装。
        • (9)安装`react-scripts`模块,即使存在对等依赖项版本冲突,也继续执行安装。
        • (10)强制安装`lodash`模块,忽略已存在的缓存和已安装的模块。
          • - `--production`:仅安装项目的生产依赖项。跳过安装`devDependencies`字段中的模块。
          • - 仅安装`package.json`文件中`dependencies`字段中列出的模块,跳过`devDependencies`中的模块。
    • 三、什么是全局目录?
      • 1. 这里的全局目录是什么
      • 2. 如何设置全局目录
        • (1) 打开终端或命令提示符。
        • (2) 运行以下命令来查看当前的全局目录:
        • (3) 若要设置新的全局目录,请运行以下命令,将`<new_path>`替换为你希望将全局目录设置为的新路径:
        • (4) 更新系统环境变量以包含新的全局目录。这样,当你全局安装模块时,命令行工具就可以找到它们。
        • (5) 保存更改并重启终端或命令提示符。

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全局目录。在执行全局安装时,模块将安装到新的全局目录,并且命令行工具将能够找到这些模块。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java入门基础学习笔记42——常用API

API&#xff08;全称&#xff1a;Application Programming Interface&#xff1a;应用程序编程接口&#xff09; 就是Java自己写好的程序&#xff0c;给程序员调用&#xff0c;方便完成一些功能的。 为什么要学别人写好的程序&#xff1f; 不要重复造轮子。 开发效率高。 面…

MySQL主从复制(一):主备一致

MySQL主备的基本原理 如图所示就是基本的主备切换流程&#xff1a; 在状态1中&#xff0c; 客户端的读写都直接访问节点A&#xff0c; 而节点B是A的备库&#xff0c; 只是将A的更新都同步过来&#xff0c; 到本地执行。 这样可以保持节点B和A的数据是相同的。 当需要切换的时候…

基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善

前言 紧接上篇->基于C#开发web网页管理系统模板流程-登录界面和主界面_c#的网页编程-CSDN博客 已经完成了登录界面和主界面&#xff0c;本篇将完善主界面的管理员录入和编辑功能&#xff0c;事实上管理员录入和编辑的设计套路适用于所有静态表的录入和编辑 首先还是介绍一下…

uniapp中使用mockjs模拟接口测试总结(swiper轮播图示例)

完整总结下在uni-app中如何使用Mock.js模拟接口测试&#xff0c;这在后台接口未就绪的情况下非常有用。同时也给出个首页swiper轮播图的mock接口使用。网上的文章都不太完整&#xff0c;这里总结下完整的使用示例&#xff0c;同时也支持h5和小程序平台&#xff0c;分享给需要的…

基于Arduino的电梯超载报警系统

企鹅&#xff1a;2583550535 项目和论文都有 第1章 绪论.............................................................................................................................. 1 1.1 项目背景及意义........................................................…

【教学类-56-03】数感训练——数字03(寻找自己的学号数字,15-20个)

背景需求&#xff1a; 在实际操作中&#xff0c;孩子们把数字当做了自己的学好&#xff0c;这个提示老师可以给每位孩子做一份“学号数感训练 【教学类-56-02】数感训练——数字02&#xff08;控制指定数字出现的数量&#xff09;-CSDN博客文章浏览阅读341次&#xff0c;点赞…

TypeScript(持续更新中...)

1.TypeScript是什么&#xff1f; TypeScript是javaScript的超集。 2.使用TypeScript 1&#xff09;全局安装nodejs 2&#xff09;安装TypeScript编译器 npm i -g typescript 3.编译ts文件 //注意&#xff1a;需要在ts文件同级目录执行此命令&#xff0c;否则会报找不到…

AI爆文写作:关注热点,提前埋伏好关键词,吃系统的热点推荐,吃搜索流量,让你的文章直接爆了!

做内容&#xff0c;要对热点敏感。 小米汽车的发布会时间&#xff0c;我们是不是提前就知道&#xff0c;发布会前&#xff0c;大家最关注的就是价格。 你看这个相关关键词搜索&#xff0c;10W太多了。 我看到有博主在发布会前&#xff0c;埋伏了一篇&#xff0c;公众号也有推…

FunSound: 基于FunASR-onnx 的高精度离线转写

​ 基于funasr的高精度离线语音转写网页 www.funsound.cn 精度和速度表现不错&#xff0c;提供给大家免费测试 ​

UniApp 2.0可视化开发工具:引领前端开发新纪元

一、引言 在移动互联网迅猛发展的今天&#xff0c;移动应用开发已经成为前端开发的重要方向之一。为了简化移动应用开发流程&#xff0c;提高开发效率&#xff0c;各大开发平台不断推出新的工具和框架。UniApp作为一款跨平台的移动应用开发框架&#xff0c;自诞生以来就备受开…

如何通过软件SPI读写W25Q64

STM32F1之SPI通信软件SPI代码编写-CSDN博客 目录 1. W25Qxx系列简介 2. W25Q64硬件电路 3. W25Q64框图 4. Flash操作注意事项 5. 代码编写 5.1 初始化 5.2 W25Q64读取ID号 5.3 W25Q64写使能 5.4 W25Q64等待忙 5.5 W25Q64页编程 5.6 W25Q64扇区擦除&#x…

YOLOv5改进 | 主干网络 | 用EfficientNet卷积替换backbone【教程+代码 】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 在YOLOv5的GFLOPs计算量中&#xff0c;卷积占了其中大多数的比列&#xff0c;为了减少计算量&#xff0c;研究人员提出了用EfficientNet代替b…

PS —— 精修图像

PS —— 精修图像 修复污点修复画笔工具修复画笔工具 美白滤镜去杂锐化加杂减淡和锐化工具 我觉得今天这篇博客&#xff0c;无论是男同胞还是女同胞&#xff0c;都要熟练掌握&#xff08;哈哈哈哈…) 今天我们来学习如何精修图像&#xff0c;精修图像一般分为几步——修复&…

32 位和 64 位 Linux 上 C 语言的整数大小的分析

在 Linux 系统上进行 C 语言编程时&#xff0c;理解整数大小在 32 位和 64 位系统上的区别是开发高效、可靠程序的基础。本文将深入探讨整数在这两种架构下的大小差异及其原因&#xff0c;并介绍其对程序的影响。 整数类型及其大小 C 语言中主要的整数类型包括 char、short、i…

蓝牙模块技术在智慧养老领域的广泛运用

随着蓝牙模块通信技术的不断提升&#xff0c;蓝牙技术作为物联网无线通信技术之一&#xff0c;正在逐渐渗透到我们生活的各个领域。众所周知&#xff0c;我国人口老龄化日益严峻&#xff0c;传统的“养儿防老”已经满足不了当前的养老需求。养老不仅仅是一个家庭的问题&#xf…

【Linux网络】端口及UDP

文章目录 1.再看四层2.端口号2.1引入linux端口号和进程pid的区别端口号是如何生成的传输层有了pid还设置端口号端口号划分 2.2问题2.3netstat 3.UDP协议3.0每学一个协议 都要讨论一下问题3.1UDP协议3.2谈udp/tcp实际上是在讨论什么&#xff1f; 1.再看四层 2.端口号 端口号(Po…

安全风险 - 切换后台时背景模糊处理

因为安全风险中提到当app处于后台卡片状态时&#xff0c;显示的卡片页面应该为模糊效果&#xff0c;否则容易泄露用户隐私&#xff0c;尤其当前页涉及个人信息、资产信息等&#xff0c;都会造成信息泄露&#xff01;基于这种场景&#xff0c;我研究了下这种业务下的模糊效果 找…

[JAVASE] 类和对象(三) - 继承

目录 一. 继承的定义 1.1 基本概念 1.2 基本实现 二. 父类 和 子类中的成员访问 2.0 super 与 this 关键字 2.1 访问成员变量 2.2 访问成员方法 三. 父类 和 子类中的构造方法 3.1 访问父类中的构造方法 3.2 注意事项 四. 权限修饰限定符 public: protected: default: …

Spring系列-03-BeanFactory和Application接口和相关实现

BeanFactory BeanFactory和它的子接口们 BeanFactory 接口的所有子接口, 如下图 BeanFactory(根容器)-掌握 BeanFactory是根容器 The root interface for accessing a Spring bean container. This is the basic client view of a bean container; further interfaces such …

GD32F103RCT6/GD32F303RCT6-UCOSIII底层移植(4)消息队列实验

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 后续项目主要在下面该专栏中发布&#xff1a; 手把手教你嵌入式国产化_不及你的温柔的博客-CSDN博客 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转&#xff1a; 手把手教你嵌入式国产化-实战项目-无刷电机驱动&am…