Gradio全解13——MCP详解(4)——TypeScript包命令:npm与npx

Gradio全解13——MCP详解(4)——TypeScript包命令:npm与npx

  • 第13章 MCP详解
    • 13.4 TypeScript包命令:npm与npx
      • 13.4.1 概念区分
        • 1. npm概念与运行逻辑
        • 2. npx概念及特点
      • 13.4.2 操作示例
        • 1. 使用npm执行包
        • 2. 使用npx执行包
        • 3. 常用npm命令
    • 参考文献

本章目录如下:

  1. 《Gradio全解13——MCP详解(1)——MCP协议介绍与架构组件》
  2. 《Gradio全解13——MCP详解(2)——MCP能力协商与通信机制》
  3. 《Gradio全解13——MCP详解(3)——TypeScript介绍:特点与适用领域》
  4. 《Gradio全解13——MCP详解(4)——TypeScript包命令:npm与npx》
  5. 《Gradio全解13——MCP详解(5)——Python包命令:uv与uvx实战》
  6. 《Gradio全解13——MCP详解(6)——MCP服务器》
  7. 《Gradio全解13——MCP详解(7)——MCP客户端》
  8. 《Gradio全解13——MCP详解(8)——MCP六大​功能特性》
  9. 《Gradio全解13——MCP详解(9)——MCP Inspector》

第13章 MCP详解

MCP是当前人工智能领域最热门技术之一,是实现大模型快速应用的捷径。本章将基于MCP最新方案修订版:2025-06-18,详细讲解MCP协议细节,并实战如何通过Gradio构建MCP客户端与服务器。

13.4 TypeScript包命令:npm与npx

MCP官方使用了以前不常见的两个命令:TypeScript的npx和Python的uvx,这两个新型的命令有何过人之处?下面两节带读者仔细了解这两个命令并实战,对于常见的npm,主要讲述npm与npx的区别和常用基本操作,而对于新兴的uv,则列举了更多的uv和uvx命令操作。

13.4.1 概念区分

npm(Node Package Manager)和npx(Node Package eXecute)在前端开发中都会时常被用到,npm大家相对熟悉(参考3.2节),npx是什么则有一定的迷惑性,和npm有什么关系和区别?下面就分别讲述。

1. npm概念与运行逻辑

简单来说,npm是一个Node包管理器,内置在Node.js中,用于发布开源Node.js项目的在线资源库,安装、共享、分发代码以及管理项目中的依赖关系,通过命令行工具CLI与线上NPM数据库进行交互,这个数据库被称为NPM Register。它的运行逻辑如下:

  1. 将某个服务器作为代码仓库(repository),存放所有需要被共享的代码。
  2. 软件供应商使用npm publish把代码提交到repository上,并分别取名。
  3. 需要使用这些代码的人,就把软件名写到package.json里,然后运行npm install就会下载代码到本地并局部安装(项目虚拟环境安装),全局安装加符号-g
  4. 下载完的代码存在node_modules目录,可以随意使用,这些代码被叫做“包”(package)。

当可执行文件通过npm包安装时,npm会创建链接指向它们:

  • 本地安装的链接是在本地./node_modules/.bin/目录下创建的。
  • 全局安装会将包安装到全局的node_modules目录下,并将可执行文件链接到系统的$PATH环境变量中,通常在bin目录下创建链接,例如:Linux上的/usr/local/bin或Windows上的%AppData%/npm

npm本身并不运行任何软件包,如果想使用npm运行一个包,有两种方式:一是必须在package.json文件中指定这个包;另一种是使用bach命令,详见操作示例。

2. npx概念及特点

npx是一个Node包执行器,npm v5.2.0引入,允许开发者在无需安装的情况下执行任意Node包,该Node包可以是本地也可以是远程的。执行本地Node包时,npx先后到环境变量$PATH和路径node_modules/.bin检查命令是否存在,如果都不存在,则执行远程Node包。远程执行时,npx会将Node包下载到一个临时目录中,使用以后再删除。npx也可以理解为少了package.json里一个script而诞生的,它极大地简化了使用纯npm时所需要的大量步骤,让npm包中的命令行工具和其他可执行文件在使用上变得更加简单。npx主要特点:

  • 临时安装可执行依赖包,不用全局安装,不用担心长期污染。
  • 可以执行依赖包中的命令,安装完成自动运行。
  • 自动加载node_modules中依赖包,不用指定$PATH
  • 可以指定node版本和命令,解决了不同项目使用不同版本命令的问题。

npx安装方法:

npm install -g npx

npx和npm使用场景:如果项目需要长期使用某个包,那么npm可能是更好的选择。因为npm能够将包全局安装在本地,无需每次使用都下载。而如果需要执行一次性的任务,或者尝试一些新的包,那么npx可能会更适合。npx可以临时下载并执行包,而不会留下任何痕迹。

13.4.2 操作示例

下面我们通过npm和npx执行Node包的例子来更具象的了解npm和npx的不同。

1. 使用npm执行包

使用npm执行包有两种操作方式:

  1. 将Node包安装到本地:
npm install package_name
# 通过本地路径执行Node包
./node_modules/.bin/package_name
  1. 也可以通过package.json中的scripts命令来执行Node包。
    package.json:
{"name": "Project-Name","version":  "x.y.z","scripts":  {"package-name":  "package-name"}
}

执行 scripts:

npm run package-name
2. 使用npx执行包

通过npx则简单很多,无需安装Node包就可以通过一个命令执行 Node 包,命令如下:

npx your-package-name

比如从本地或者远程npm包中运行一个命令,例如:

npx create-react-app my-app   # 使用create-react-app快速创建React项目
npx eslint .                  # 使用本地eslint检查代码

关于npx更多信息请参考npx。

总结:npm是一个Node包管理器,npx是一个Node包执行器。Node的执行也可由npm完成,但是必须进行安装,通过定位本地路径或者配置scripts来执行。npx则通过一个简单命令大大简化了包运行的成本,既可以运行本地包,也可以远程包,无需安装包也可以执行,这就有效避免了本地磁盘污染,节省磁盘空间。

3. 常用npm命令

以下是npm的核心命令分类及功能概述:

  1. 基础项目管理命令。初始化项目:npm init或npm init -y(跳过交互式问答)创建package.json文件。‌‌‌‌
  2. 依赖管理命令。安装依赖:npm install:安装package.json中所有依赖;npm install :安装指定包(默认添加到dependencies)。‌‌‌‌卸载依赖:npm uninstall 。‌更新依赖:npm update:更新所有依赖。‌‌‌‌npm outdated:列出可更新的包。‌‌‌‌查看依赖:npm list。npm ci:使用 package-lock.json快速安装依赖,适用于CI/CD环境。
  3. 运行与测试脚本命令。运行脚本:npm run<script>(或npm start),执行package.json中的自定义脚本。测试脚本:npm test<script>。
  4. 配置管理‌。npm config set <key> <value>:修改配置(持久化到 ~/.npmrc),如更换镜像源:npm config set registry https://registry.npmmirror.com/。‌‌npm config list:查看当前配置。‌‌

更多命令及示例请参考:NPM使用介绍。

参考文献

  1. Python开发人员,请不要低估TypeScript!
  2. TypeScript“杀疯了”!60% 到 70%YC 创企用它构建 AI Agent,超越 Python 有戏了?
  3. NPM vs. NPX,傻傻分不清楚
  4. uv
  5. Python 包管理工具核心指令uvx解析
  6. MCP Introduction

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

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

相关文章

《推客小程序全链路开发指南:从架构设计到裂变运营》

在移动互联网流量红利逐渐消退的今天&#xff0c;如何低成本获客成为企业营销的核心痛点。推客小程序作为一种基于社交关系的裂变营销工具&#xff0c;正成为企业突破增长瓶颈的利器。本文将为您全面解析推客小程序的开发定制全流程&#xff0c;帮助您打造专属的社交裂变营销平…

中钧科技参加中亚数字经济对话会,引领新疆企业数字化新征程!

6月27 日&#xff0c;乌鲁木齐成为数字经济领域的焦点&#xff0c;中国新疆 - 中亚国家数字经济和数字贸易企业对话会在此盛大举行。 来自中亚国家及新疆数字经济领域的100 余位核心代表齐聚一堂&#xff0c;围绕数字经济时代的机遇、挑战与策略展开深度探讨。 本次对话会由新…

k8s一键部署tongweb企业版7049m6(by why+lqw)

声明 1.此贴仅供参考&#xff0c;请根据自身需求在测试环境测试和修改。 安装准备 1.获取对应的安装包和授权,并将授权和安装包放在同一个目录下 2.docekr已配置远程仓库 3.提前拉取jdk的镜像&#xff08;这里配置了使用openjdk:8&#xff09; 安装 将以下内容复制到k8s_…

Qt 与 Halcon 联合开发六:基于海康SDK设计完整的相机类【附源码】

在现代工业自动化、机器人视觉、等领域&#xff0c;相机模块的作用至关重要。通过相机模块采集到的图像数据&#xff0c;我们能够进行一系列的图像处理和分析。为了高效地控制相机和处理图像&#xff0c;本篇文章将介绍如何使用Qt和Halcon联合开发一个相机模块&#xff0c;帮助…

第7篇:Gin模板引擎——服务端页面渲染

作者:GO兔 博客:https://luckxgo.cn 分享大家都看得懂的博客 引言 在Web开发中&#xff0c;服务端页面渲染(SSR)依然是构建动态网页的重要方式。Gin框架虽然以API开发见长&#xff0c;但也内置了强大的模板引擎支持&#xff0c;基于Go标准库的html/template包实现。本文将深入…

RagFlow 源码部署启动指南

一、环境准备 1. 安装 uv 和 pre-commit 如果已安装&#xff0c;可跳过。推荐使用官方方式安装&#xff0c;避免报错&#xff1a; pipx install uv pre-commit export UV_INDEXhttps://mirrors.aliyun.com/pypi/simple安装报错 使用清华源安装&#xff1a; pipx install uv…

【Python基础】12 闲谈分享:Python用于无人驾驶的未来

引言&#xff1a;一个程序员的自动驾驶梦想 还记得2016年的那个秋天&#xff0c;我第一次坐进特斯拉Model S的驾驶座&#xff0c;体验Autopilot功能。当方向盘开始自己转动&#xff0c;车辆在高速公路上自动跟随前车时&#xff0c;我的内心涌起了一种奇妙的感觉——这不就是我…

为什么js是单线程?

js单线程&#xff0c;同一时间只能做一件事 。js的单线程 主要与它的用途有关。作为浏览器脚本语言&#xff0c;js的主要用途是与用户互动&#xff0c;以及操作DOM。这决定了它只能是单线程&#xff0c;否则会带来很复杂的同步问题。如果js同时有两个线程&#xff0c;一个线程在…

DVWA靶场通关笔记-文件包含(Medium级别 9种渗透方法)

目录 一、文件包含 1、原因 2、危害 3、防范措施 二、代码审计&#xff08;Medium级别&#xff09; 1、渗透准备 &#xff08;1&#xff09;配置php.ini &#xff08;2&#xff09;file1.php &#xff08;3&#xff09;file2.php &#xff08;4&#xff09;file3.php…

飞云翻倍布林(翻倍密码系统四线布林版)双安全系统+均价趋势指标+日线周线MACD,组合操盘技术图文分享

如上图组合操盘套装指标&#xff0c;主图指标-翻倍密码系统四线布林版-飞云翻倍布林。副图指标1-均价趋势指标&#xff0c;跟踪市场均价走势和趋势&#xff1b;副图指标2-日线周线MACD指标&#xff0c;跟踪日线和周线两个级别的MACD多空走势以及共振与否。 主图指标-飞云翻倍布…

《汇编语言:基于X86处理器》第6章 条件处理(1)

本章向程序员的汇编语言工具箱中引入一个重要的内容&#xff0c;使得编写出来的程序具备作决策的功能。几乎所有的程序都需要这种能力。首先&#xff0c;介绍布尔操作&#xff0c;由于能影响CPU状态标志&#xff0c;它们是所有条件指令的核心。然后&#xff0c;说明怎样使用演绎…

【分治思想】归并排序 与 逆序对

归并排序 归并排序是一种分治算法&#xff0c;怎么分&#xff0c;怎么治&#xff1f; 分&#xff1a;通过递归不断把数组分成两半&#xff0c;直到每个子数组只剩 1 个元素&#xff08;天然有序&#xff09;治&#xff1a;把两个已经排好序的子数组合并成一个有序数组。 把问…

SQL参数化查询:防注入与计划缓存的双重优势

在数据库操作中&#xff0c;SQL参数化查询&#xff08;Parameterized Queries&#xff09;是一种非常有效的技术&#xff0c;它不仅可以防止SQL注入攻击&#xff0c;还可以提高数据库查询的效率&#xff0c;尤其是在与计划缓存&#xff08;Query Plan Caching&#xff09;结合使…

【你怕一E1】- 孰轻孰重如何断-组合问题的多种情形

摘要 本视频讲解了组合问题的多种情形,包括多选一、多选二、多选三以及分队问题的解题方法。首先介绍了从不同人数中选人的不同选择方式,如一百人中选一人有一百种选择。随后,详细讲解了有序思考方法在多选二问题中的应用,通过选队长的方式列举不同组合情况,并归纳出选择规…

nginx反向代理的bug

nginx反向代理的bug 问题呈现 当我们配置反向代理的时候查询error.log的时候我们发现以下的问题 2025/06/29 08:38:47 [error] 7#7: *2 open() “/usr/share/nginx/html/payed/notify” failed (2: No such file or directory), client: 192.168.98.1, server: localhost, r…

MyBatis 动态 SQL 与缓存机制深度解析

在Java持久层技术体系中&#xff0c;MyBatis凭借其灵活的SQL映射和强大的动态SQL能力&#xff0c;成为企业级应用开发的首选框架。本文从动态SQL核心语法、缓存实现原理、性能优化及面试高频问题四个维度&#xff0c;结合源码与工程实践&#xff0c;系统解析MyBatis的核心特性与…

Nuxt 3 中实现跨组件通信方式总结:使用 Pinia、Provide/Inject 或 Props

在开发复杂的 Web 应用时&#xff0c;跨组件通信是一个常见的需求。Nuxt 3 提供了多种方式来实现这一点&#xff0c;包括使用状态管理工具&#xff08;如 Pinia&#xff09;、Vue 的 provide/inject 机制以及传统的 props 传递。本文将详细介绍这三种方法&#xff0c;并通过一个…

Java ArrayList 扩容机制

一、ArrayList 简介 ArrayList 是 Java 集合框架中基于数组实现的可变长度列表&#xff0c;其核心特性是&#xff1a; 支持随机访问&#xff08;通过索引&#xff09;支持动态扩容插入/删除效率较低&#xff08;非尾部操作&#xff09; 二、底层数据结构 // JDK 11 transien…

C++面试题精讲系列之数组排序

数组排序是我们经常遇到的笔试题目&#xff0c;给大家盘一下这题到底想考察什么&#xff1f; // 考题如下 void main() {int arr[4] {26,28,24,11};// 请实现一个sortArray函数&#xff0c;对数组arr进行从小到大排序 }考点1&#xff1a;数组做函数参数如何传递参&#xff1f;…

Windows10/11 轻度优化 纯净版,12个版本!

系统介绍 镜像包均基于微软官方原版系统精心制作&#xff0c;确保系统的原汁原味与稳定性。Windows 10/11&#xff0c;都集成了最新的补丁。版本选对&#xff0c;一键安装到位&#xff0c;全自动无人值守安装模式。 系统特点 系统进行优化提供了12个系统版本集成了运行库、…