Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
npm 与 npx:有什么区别?_创想鸟

npm 与 npx:有什么区别?

作者 fimber elemuwa✏️

在使用 javascript 或 node.js 时,您很可能遇到过 npm,即 node 包管理器。它是管理包、安装依赖项并确保您的项目与其所需的库保持最新状态的首选工具。但是 npx 是另一个与 npm 捆绑在一起的工具,它经常引发这样的问题:两者之间有什么区别

乍一看,npm 和 npx 似乎都可以帮助您与 node.js 包交互,但它们的用途不同。在本文中,我们将详细分析 npm 和 npx 之间的主要区别,向您展示它们的工作原理,并探讨何时使用它们。

无论您是在设置新项目、运行脚本,还是只是想知道何时使用 npm 和 npx,本指南都将帮助您了解这两种工具以及它们如何融入您的开发工作流程。

什么是 npm?

npm 代表 node package manager,顾名思义,它是一个用于管理 node.js 包的工具。每次你的项目需要一个新的“包”时,你都会求助于 npm 来帮助你安装它。这些包的范围可以从小型实用函数到成熟的框架和库。

但是 npm 不仅仅用于安装库。它也非常适合管理项目依赖项和脚本。如果您需要锁定库的特定版本以防止发生重大更改,npm 可以满足您的需求。它还允许您在 package.json 文件中定义脚本来自动执行常见任务,例如测试或构建项目。

npm 是如何工作的

将 npm 视为软件组件的数字商店。当您开始一个新的 node.js 项目时,您将需要各种工具和库来构建它。您可以使用 npm 来获取并安装这些预构建的包,而不是重新发明轮子。它的工作原理是维护一个庞大的在线软件包注册表,每个软件包都有其唯一的名称和版本。

当您使用 npm install 命令时,npm 会下载指定的包及其依赖项,并将它们放置在名为 node_modules 的本地目录中,这是跟踪所有项目依赖项和版本的中心位置。本地安装意味着该软件包仅在您安装它的项目中可用。该命令如下所示:

npm install 

例如,如果您想将owsay库添加到您的项目中,您可以输入:

npm install cowsay

然后您的项目就可以访问该目录,从而允许您在代码中使用该包的功能。全局安装使软件包可供整个系统使用,因此您可以将其用于任何项目。这对于您想要从任何地方运行的命令行工具非常有用。

除了简单的包安装之外,npm 还为每个包提供版本控制,让您可以指定所需的确切版本。这对于避免新版本中的重大更改引起的潜在问题至关重要。

此外,npm 提供了一种在 package.json 中定义脚本的方法 – 这些命令可以自动执行启动服务器、运行测试或构建项目等任务。在 package.json 中,您可以定义如下脚本:

{  "scripts": {    "start": "node index.js",    "test": "jest"  }}

npx是什么?

npx 是在 npm v 5.2.0 中引入的。 npm 是关于安装和管理包的,而 npx 是关于运行它们的。

将 npx 视为一个快速命令运行程序,可让您执行 node.js 包而无需安装它们。当您只想使用某个包一次或对其进行测试而不将其永久添加到系统中时,npx 特别有用。

在 npx 之前,如果您想使用软件包中的命令行工具,则必须先全局安装它。 npx 允许您直接从 npm 注册表运行该工具,无需全局安装,从而简化了这一过程。

npx 的工作原理

当您使用 npx 运行命令时,它首先检查您的本地 node_modules 目录。如果在那里找到包,就会执行它。如果没有,npx 会临时安装该包,运行它,然后将其删除。这意味着您可以使用各种工具,而不会弄乱您的系统。

假设您想使用 create-react-app 启动一个新的 react 项目。通常,您必须先全局安装它:

npm install -g create-react-app

然后,你会运行:

create-react-app my-app

但是使用npx,你可以跳过全局安装,直接运行:

npx create-react-app my-app

此命令下载 create-react-app,运行它,并在完成后丢弃它。它既快速又方便,可以防止您的系统因可能只使用一次的全局包而变得混乱。

如果您已经在项目中本地安装了软件包,npx 可以帮助您运行它,而无需指定 node_modules 的完整路径。例如,如果您在本地安装了 jest 进行测试,则可以使用 npx 运行它,如下所示:

npx jest

npx 会自动在本地 node_modules 文件夹中查找包并运行它,节省您的时间和麻烦。

我认为 npx 最酷的功能是它能够确定您正在尝试运行哪个包或命令。它遵循三个步骤来决定如何执行任何命令:

本地检查:npx 首先检查包是否本地安装在项目的 node_modules 文件夹中。如果找到该包,就会从那里运行它全局检查:如果在本地找不到该软件包,npx 会检查它是否已全局安装在您的系统上。如果它在全局范围内找到该包,则会运行它从 npm 注册表中获取:最后,如果 npx 在本地或全局都没有找到该包,它会从 npm 注册表中获取该包,运行它,然后在执行后将其删除

注意,默认情况下,npx 将运行软件包的最新版本,但如果您需要特定版本,您也可以告诉它要运行哪个版本。

npm 和 npx 之间的主要区别

npm 和 npx 都是 node.js 生态系统中至关重要的工具,但它们在不同层面上扮演着不同的角色:

featurenpmnpxpurpose and functionalityprimarily used for installing packages from the npm registry and managing dependencies in node.js projects. it helps in adding, removing, and updating packages, and maintaining package versioningdesigned to execute node packages directly without needing to install them globally. it allows users to run packages without cluttering the global or project-specific `node_modules`package installationinstalls packages locally or globallyexecutes packages temporarily without installing them permanentlytemporary usageinstallation with npm persists until explicitly removed. packages remain in `node_modules` or globally installed pathsruns packages temporarily and discards them after execution unless otherwise specifiedusage`npm install “npx `script setuprequires modifications to `package.json` to create custom scriptsno modifications needed in `package.json` for running commandsexecution of cli toolsmust install cli tools globally or locally before using themcan run cli tools directly from the npm registry without prior installationproject setuptypically used for project setup involving multiple dependencies and versions.ideal for quick project scaffolding or one-time command execution, like `create-react-app`node.js compatibilitybundled with node.js for general project and package managementincluded with node.js starting from v 8.2.0, streamlining the execution of packages

结论:什么时候应该使用 npm 和 npx?

决定何时使用 npm 或 npx 取决于任务和项目的需求。

当您需要安装和管理对开发或生产至关重要的项目依赖项时,您应该使用 npm。由于 npm 确保包在 package.json 中列出,因此您可以完全控制项目内的版本控制和一致性。它也是运行 package.json 中定义的脚本的首选工具,使其成为构建、测试或运行服务器等任务的理想选择。

另一方面,npx 最适合快速、一次性命令或测试工具,无需全局安装。如果您只想使用一个工具一次(例如用于引导 react 项目的 create-react-app),npx 可以让您直接运行它,而不会弄乱您的系统。它还可以方便地运行本地安装的软件包,而无需输入完整路径,从而简化了您的工作流程。简而言之,使用 npm 进行长期依赖管理,使用 npx 进行临时任务或动态运行包。

仅 200 个 ✔️ 监控生产中失败和缓慢的网络请求

部署基于节点的 web 应用程序或网站是最简单的部分。确保您的 node 实例继续为您的应用程序提供资源是事情变得更困难的地方。如果您有兴趣确保对后端或第三方服务的请求成功,请尝试 logrocket。

npm 与 npx:有什么区别?

npm 与 npx:有什么区别?

logrocket 就像网络应用程序的 dvr,记录您网站上发生的所有事情。您无需猜测问题发生的原因,而是可以汇总并报告有问题的网络请求,以快速了解根本原因。

logrocket 为您的应用程序记录基准性能计时,例如页面加载时间、第一个字节的时间、缓慢的网络请求,并记录 redux、ngrx 和 vuex 操作/状态。开始免费监控。

以上就是npm 与 npx:有什么区别?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1499367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
掌握现代 JavaScript:深入探讨 ESunction 创建和最佳实践
上一篇 2025年12月19日 21:43:55
掌握组件通信
下一篇 2025年12月19日 21:44:13

相关推荐

  • MySQL性能模式监控资源_MySQL瓶颈定位精确工具

    MySQL性能模式监控资源_MySQL瓶颈定位精确工具MySQL性能模式监控资源_MySQL瓶颈定位精确工具MySQL性能模式监控资源_MySQL瓶颈定位精确工具MySQL性能模式监控资源_MySQL瓶颈定位精确工具

    mysql性能模式通过事件记录精准定位瓶颈,核心步骤包括:1.启用并配置performance schema,选择性开启消费者和仪器;2.监控等待事件、sql语句、阶段、i/o、内存及锁等关键指标;3.分析events_waits_summary_global_by_event_name等表识别资源…

    2026年9月21日 用户投稿
    000
  • 三星在电视端首发Perplexity AI应用程序,带来更具创新性AI体验

    10 月 23 日消息,三星电子于美国当地时间 21 日宣布,率先在电视终端推出 perplexity ai 应用程序,为三星电视用户带来更富创新的 ai 使用体验。 借助该应用程序,用户在安排日常生活、查找特定影视内容、创建梦幻体育联赛阵容或策划万圣节活动等场景中,可获得 AI 以卡片式回复框形式…

    2026年9月21日
    000
  • 帕鲁高管回应《幻兽帕鲁:帕鲁农场》疑似碰瓷《宝可梦 pokopia》:乱讲阴谋论

    帕鲁高管回应《幻兽帕鲁:帕鲁农场》疑似碰瓷《宝可梦 pokopia》:乱讲阴谋论帕鲁高管回应《幻兽帕鲁:帕鲁农场》疑似碰瓷《宝可梦 pokopia》:乱讲阴谋论帕鲁高管回应《幻兽帕鲁:帕鲁农场》疑似碰瓷《宝可梦 pokopia》:乱讲阴谋论帕鲁高管回应《幻兽帕鲁:帕鲁农场》疑似碰瓷《宝可梦 pokopia》:乱讲阴谋论

    在不久前的任天堂直面会上,官方公布了一款宝可梦ip的衍生新作——《宝可梦 pokopia》。这款作品让玩家化身一只能够变身成人类训练家的百变怪,主打种田与建造玩法,属于模拟经营类游戏。 视频欣赏: 无独有偶,几天后,《幻兽帕鲁》的开发商PocketPair也正式公布了他们的全新衍生作《幻兽帕鲁:帕鲁…

    2026年9月21日 用户投稿
    000
  • 如何使用mysql设计客户信息管理项目

    答案:设计客户信息管理系统需先明确功能需求,再合理规划数据库结构。1. 根据客户需求划分模块,包括客户基本信息、分类、状态、跟进记录等;2. 创建核心表如customers、company_info、follow_ups和users,确保字段完整且符合业务逻辑;3. 在关键字段上建立索引以提升查询效…

    2026年9月21日
    300
  • 夸克Ai搜索如何设置默认_夸克Ai搜索默认引擎更改

    首先在夸克APP中将默认搜索引擎设为AI引擎,再开启相关AI功能开关以启用AI搜索服务。具体步骤:1、打开夸克APP,点击右下角菜单进入设置;2、选择“通用”选项,点击“搜索引擎”;3、选择“AI引擎”或“夸克AI搜索”作为默认服务;4、返回主界面测试搜索关键词,确认AI结果是否展示;5、进入“AI…

    2026年9月21日
    400
  • mysql如何实现后台管理系统

    答案:基于MySQL的%ignore_a_1%需设计用户、权限、日志等表结构,通过后端语言实现安全的CRUD接口与JWT认证,前端展示数据并控制权限,确保系统安全稳定。 实现一个基于 MySQL 的后台管理系统,核心是构建一个安全、稳定、可扩展的系统架构,将数据库作为数据存储层,配合后端语言和前端界…

    2026年9月21日
    000
  • Workerman服务启动失败的排查步骤

    workerman服务启动失败的排查步骤如下:1. 检查配置文件,确保无语法错误;2. 查看系统日志,寻找错误线索;3. 检查端口占用情况,确保端口未被占用;4. 调整文件权限,确保workerman有足够权限;5. 检查php环境,确保版本兼容且扩展已安装。 关于Workerman服务启动失败的排…

    2026年9月21日
    200
  • 百度浏览器自动跳转怎么办 百度浏览器页面跳转广告拦截方法

    百度浏览器自动跳转通常由恶意软件或设置被篡改引起,需检查浏览器设置、清除异常插件、修复快捷方式与注册表,并使用安全软件扫描清理,同时启用广告拦截与隐私保护功能以彻底解决问题。 百度浏览器出现自动跳转,通常不是浏览器本身的问题,而是由恶意软件、插件或设置被篡改导致的。解决这个问题需要从多个方面入手,检…

    2026年9月21日
    100
  • 压力测试(Benchmark)Swoole服务的工具与方法

    进行swoole服务的压力测试是为了确保服务在高负载下稳定运行。1. 选择工具:apache jmeter、wrk、locust。2. 使用方法:jmeter通过脚本配置,wrk通过命令行,locust通过python脚本。3. 注意事项:环境隔离、数据监控、脚本设计。4. 优化点:内存泄漏、连接池…

    2026年9月21日
    000
  • Windows11内存占用率过高怎么解决_Windows11内存占用过高修复方法

    1、通过任务管理器结束高内存占用进程;2、禁用Superfetch(SysMain)服务以降低内存负担;3、优化启动项减少后台负载;4、升级物理内存条提升系统性能。 如果您发现Windows 11系统运行缓慢,并且任务管理器显示内存占用率持续处于高位,这可能是由于后台进程过多、系统服务占用资源或硬件…

    2026年9月21日
    100
  • mysql常用存储引擎有哪些

    InnoDB是现代MySQL应用的首选存储引擎,因其支持事务(ACID)、行级锁、外键约束、崩溃恢复和MVCC,适用于高并发、数据完整性要求高的OLTP场景;MyISAM虽读取快但仅支持表级锁且无事务和外键,适用于读多写少的简单场景,已逐渐被淘汰;Memory引擎将数据存于内存,速度快但易失,适合临…

    2026年9月21日
    000
  • 怎么弄微信公众号_微信公众号注册与功能配置教程

    怎么弄微信公众号_微信公众号注册与功能配置教程怎么弄微信公众号_微信公众号注册与功能配置教程怎么弄微信公众号_微信公众号注册与功能配置教程怎么弄微信公众号_微信公众号注册与功能配置教程

    答案:注册微信公众号需先确定账号类型,订阅号适合内容发布,服务号侧重功能服务,个人注册仅能选订阅号,企业可选服务号并需认证;注册后需配置自定义菜单、自动回复和欢迎语以提升用户体验。 微信公众号的注册与功能配置,说到底,就是把你的内容或服务,通过微信这个巨大的平台,有效地触达目标用户。这过程不复杂,但…

    2026年9月21日 用户投稿
    100
  • 如何配置VSCode来完美支持Vue.js开发?

    安装Volar、TypeScript Vue Plugin、ESLint和Prettier扩展,禁用Vetur,在settings.json中配置vetur.enabled为false,设置ESLint保存时自动修复并指定Prettier为默认格式化工具,关联.vue文件语言,启用TypeScrip…

    2026年9月21日
    000
  • 利用蝴蝶号搭建多账号无人直播系统的完整方案

    利用蝴蝶号搭建多账号无人直播系统的完整方案利用蝴蝶号搭建多账号无人直播系统的完整方案利用蝴蝶号搭建多账号无人直播系统的完整方案利用蝴蝶号搭建多账号无人直播系统的完整方案

    搭建多账号无人直播系统并非一键操作,而是通过“蝴蝶号”实现自动化流程。首先,“蝴蝶号”负责多账号的生命周期管理,包括登录、状态维护、ip代理分配和设备指纹模拟;其次,内容调度系统决定直播内容及播放时间,可为预录视频或动态生成流;再次,推流引擎将内容实时推送至平台,推荐使用ffmpeg结合python…

    2026年9月21日 用户投稿
    100
  • 锚定AI终端存储市场,康盈半导体连发三款新品

    锚定AI终端存储市场,康盈半导体连发三款新品锚定AI终端存储市场,康盈半导体连发三款新品锚定AI终端存储市场,康盈半导体连发三款新品锚定AI终端存储市场,康盈半导体连发三款新品

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 三款新品聚焦AI存储需求 在最新举行的产品发布会上,康盈半导体正式推出三款专为AI应用场景打造的全新存储解决方案,覆盖嵌入式存储与高性能固态硬盘等多个品类,旨在满足多样化AI终端对高效、紧凑、低…

    2026年9月21日 用户投稿
    100
  • linux内核定时器实验

    linux内核定时器实验linux内核定时器实验linux内核定时器实验linux内核定时器实验

    大家好,又见面了,我是你们的朋友全栈君。 文章目录一、linux时间管理和内核定时器简介1.内核时间管理简介2.内核定时器简介1.init_timer 函数2.add_timer 函数3.del_timer 函数4.del_timer_sync 函数5.mod_timer 函数3.linux内核短延…

    2026年9月21日 用户投稿
    000
  • WordPress插件定制:使用Filter Hook修改邮件通知接收者

    本教程将指导您如何在WordPress中利用Filter Hook定制插件行为,特别是修改第三方插件的邮件通知接收者。我们将详细讲解如何识别目标Filter、理解其参数,并正确编写回调函数来拦截或修改数据,以实现自定义的邮件发送逻辑,避免因参数不匹配导致的错误。 WordPress Hook机制概览…

    2026年9月21日
    100
  • Swoole如何实现一个UDP服务器

    答案:使用Swoole可轻松创建高性能UDP服务器。通过new SwooleServer()设置UDP套接字,监听Packet事件接收数据,利用sendto()回复客户端;结合set()配置worker_num等参数优化性能,配合PHP UDP客户端测试通信,适用于高并发、低延迟场景。 使用Swoo…

    2026年9月21日
    100
  • MySQL执行计划中的Extra字段代表什么_怎么看优化空间?

    MySQL执行计划中的Extra字段代表什么_怎么看优化空间?MySQL执行计划中的Extra字段代表什么_怎么看优化空间?MySQL执行计划中的Extra字段代表什么_怎么看优化空间?MySQL执行计划中的Extra字段代表什么_怎么看优化空间?

    在 mysql 查询优化中,执行计划的 extra 字段用于说明查询执行时的额外操作,常见的值包括:1. using filesort 表示需要额外排序,应尽量通过建立索引避免;2. using temporary 表示使用了临时表,常见于 group by 或复杂 join,需优化减少其使用;3.…

    2026年9月21日 用户投稿
    100
  • 如何通过tracert命令追踪数据包从本地到目标服务器的完整路径?

    打开命令提示符,输入cmd并回车;2. 执行tracert 目标地址命令追踪路径;3. 查看每跳响应时间与IP,分析延迟变化定位网络瓶颈;4. 注意部分节点可能因防火墙不响应导致超时。 使用 tracert(Windows 系统)命令可以追踪数据包从你的计算机到目标服务器所经过的每一跳网络节点,帮助…

    2026年9月21日
    1000

发表回复

登录后才能评论
关注微信