第7期 一文读懂NPX

简介: 第7期 一文读懂NPX

一、概述

npm从5.2.0版开始,增加了 npx 命令。npx想要解决的主要问题,就是调用项目内部安装的模块。在过去一段时间,npm 生态倾向将工具库安装在本地devDependencies上,而不建议全局安装安装。但如果想要调用这些模块,我们必须要在项目脚本或 package.json 的 scripts 字段中对其调用进行定义。否则,我们必须要定位到 node_modules 中用繁琐的命令才能实现在命令行中对其进行调用。npx的出现即在不使用 npm run script 情况下使用本地安装过的模块。比如,项目内部安装了打包工具webpack(npm install webpack -D),如果我们使用webpack,只能在项目脚本的 package.json 中的scripts字段里面使用, 如果想在命令行下调用,必须用node-modules/.bin/webpack -v,但使用npx可以让项目内部安装的模块用起来更方便,直接可以使用npx webpack -v,另外,使用npx可以避免全局安装模块。

二、安装

NodeJS安装后自带npm模块,可以直接使用npx命令。如果不能使用用,就要手动安装一下。

npm install -g npx

三、使用

使用npx可以避免全局安装模块

3.1 调用系统命令

npx 的原理很简单,就是运行的时候,会到node_modules/.bin路径和环境变量$PATH里面,检查命令是否存在,所以它也可以调用系统命。

npx ls // 等同于ls命令

3.2 避免全局安装,执行一次性命令

  • 我们想执行一些 CLI 工具,但是为了运行一次而不得不在全局安装它,我们可以使用npx可以避免全局安装模块,使用npx执行时,如果命令不在你的 $PATH 中,npx 会自动从 npm 注册源中拉取具有该名字的模块并安装调用它。在调用完成后,安装的模块并不会被放入你的环境变量,不会对你的环境造成污染。比如,create-react-app这个模块是全局安装,npx 可以运行它,而且不进行全局安装。npx 将 create-react-app 下载到一个临时目录,使用以后再删除。所以,以后再次执行上面的命令,会重新下载 create-react-app。通过 @ 我们还可以指定模块版本:

npx create-react-app@1.0.0  my-react-app

  • 下载全局模块时,npx 允许指定版本。指定使用 4.44.1 版本的webpack进行打包操作

npx webpack@4.44.1 ./src/index.js -o ./dist/main.js

注意:只要 npx 后面的模块无法在本地发现,就会下载同名模块。比如,本地没有安装webpack-dev-server模块,下面的命令会自动下载该模块npx webpack-dev-server,在当前目录启动一个 Webpack dev 服务。

  • npx 强制使用本地模块,不下载远程模块,可以使用--no-install参数。如果本地不存在该模块,就会报错。

npx --no-install webpack-dev-server

  • 忽略本地的同名模块,强制安装使用远程模块,可以使用--ignore-existing参数。

npx --ignore-existing create-react-app my-react-app

3.3 指定 Node 执行版本

  • 利用 npx 指定某个版本的 Node 运行脚本。

npx node@16.15.1 -v

上面命令会使用 16.15.1 版本的 NodeJS 执行脚本。原理是从 npm 下载这个版本的 node,使用后再删掉。

3.4 执行 gist 片段代码

npx 甚至支持运行远程仓库的可执行文件,npx 支持通过 url 执行 GitHub 上的源码模块。只要按照模块的定义写好,然后提供 gist 地址,npx 便可以按照约定执行脚本。

  1. 一个标准模块定义至少应该包含一个 package.json 文件,并指定 bin 脚本入口,

{
   "name": "micro-cli",
   "version": "1.0.0",
   "bin": "./index.js"
}

  1. 然后便可以这样执行:

npx https://gist.github.com/mcro-design/xxx

四 命令

在传统的命令执行中,我们需要将工具添加到 package.jsonscripts 配置中,这种方式还需要我们以 -- 方式传递参数;我们也可以使用 alias npmx=PATH=$(npm bin):$PATH, 或者./node_modules/.bin/webpack方式来执行命令,虽然都能达到目标,但不免繁杂了许多。而npx允许我们以 npx webpack 这样的方式直接运行本地安装的 webpack 命令。完整的 npx 命令提示如下:

从 npm 的可执行包执行命令

 npx [选项] <命令>[@版本] [命令的参数]...

 npx [选项] [-p|--package <包>]... <命令> [命令的参数]...

 npx [选项] -c '<命令的字符串>'

 npx --shell-auto-fallback [命令行解释器]


选项:
 --package, -p          包安装的路径                                   [字符串]
 --cache                npm 缓存路径                                   [字符串]
 --install              如果有包缺失,跳过安装            [布尔] [默认值: true]
 --userconfig           当前用户的 npmrc 路径                          [字符串]
 --call, -c             像执行 `npm run-script` 一样执行一个字符串     [字符串]
 --shell, -s            执行命令用到的解释器,可选     [字符串] [默认值: false]
 --shell-auto-fallback  产生“找不到命令”的错误码
                                   [字符串] [可选值: "", "bash", "fish", "zsh"]
 --ignore-existing      忽略 $PATH 或工程里已有的可执行文件,这会强制使 npx
                        临时安装一次,并且使用其最新的版本               [布尔]
 --quiet, -q            隐藏 npx 的输出,子命令不会受到影响              [布尔]
 --npm                  为了执行内部操作的 npm 可执行文件     [字符串] [默认值:
  "/Users/apple/.nvm/versions/node/v8.1.3/lib/node_modules/npm/bin/npm-cli.js"]
 --version, -v          显示版本号                                       [布尔]
 --help, -h             显示帮助信息                                     [布尔]

目录
相关文章
|
Arthas 监控 Java
Java 诊断利器 Arthas使用
Java 诊断利器 Arthas使用
5312 0
|
5月前
|
人工智能 Linux 网络安全
2026年阿里云新手用户极速部署OpenClaw(Clawdbot)喂饭级教程
2026年,AI智能体全面普及,OpenClaw(曾用名Clawdbot、Moltbot)凭借轻量化、可扩展、私有化部署的优势,成为个人与小团队首选的AI自动化工具。很多新手想搭建专属智能助手,却卡在环境配置、命令执行、端口放行、权限设置等环节,要么部署失败,要么服务无法访问。
733 12
|
6月前
|
人工智能 运维 前端开发
Claude Code 30k+ star官方插件,小白也能写专业级代码
Superpowers是Claude Code官方插件,由核心开发者Jesse打造,上线3个月获3万star。它集成brainstorming、TDD、系统化调试等专业开发流程,让AI写代码更规范高效。开源免费,安装简单,实测显著提升开发质量与效率,值得开发者尝试。
13206 5
|
4月前
|
人工智能 安全 前端开发
Team 版 OpenClaw:HiClaw 开源,5 分钟完成本地安装
HiClaw 基于 OpenClaw、Higress AI Gateway、Element IM 客户端+Tuwunel IM 服务器(均基于 Matrix 实时通信协议)、MinIO 共享文件系统打造。
11340 50
|
人工智能 弹性计算 监控
3分钟部署HiClaw
HiClaw 是基于 OpenClaw 的开源 Agent 团队系统,含 Manager(AI 管家)与可扩展 Worker,通过 Matrix 群聊协作。安全设计(仅用消费者令牌)、开箱即用(内置 Matrix)、一键部署(curl | bash)、丰富技能生态(skills.sh),真正让 AI 团队可控、可信、易用。(239字)
3分钟部署HiClaw
|
6月前
|
人工智能 安全 应用服务中间件
阿里云 Moltbot(原 Clawdbot)全套云服务介绍、部署步骤与使用指南
Moltbot(原Clawdbot)是由PSPDFKit Labs开发的开源自托管AI智能体(AI Agent),核心定位为“可自主执行任务的AI助手”,区别于传统问答式AI工具,其具备屏幕感知、任务规划、操作执行与状态验证的全链路能力,可7×24小时运行在服务器或终端设备上,通过自然语言指令自动完成文件管理、日程安排、邮件处理、代码编写、跨应用协同等自动化任务,数据优先存储于用户自有节点,隐私可控。2026年,阿里云正式上线Moltbot全套云服务,整合轻量应用服务器、无影云电脑、百炼大模型平台等核心资源,提供预置镜像、一键部署、安全优化等全流程支持,大幅降低部署门槛,适配个人、小型团队及企
4749 9
|
JavaScript Shell 内存技术
npx教程
npx教程
4103 1
|
12月前
|
存储 数据采集 监控
团队如何用 Python 脚本实现竞品价格监控?日均节省 8 小时,调价响应速度提升 3 倍
本文介绍某3C电商团队如何利用Python实现全自动竞品价格监控,涵盖多平台数据采集、智能分析与自动告警。
|
Linux iOS开发 MacOS
【MCP教程系列】阿里云百炼MCP全面配置指南:涵盖NPX、UVX、SSE及Streamable HTTP
本文详细介绍如何在阿里云百炼平台及Windows、Linux、MacOS系统中正确配置MCP服务的JSON文件。内容涵盖三种MCP服务配置:npx(基于Stdio)、uvx(Python工具运行)和SSE(服务器发送事件)。同时解析Streamable HTTP作为新一代传输方案的优势与应用,帮助用户掌握每个参数的具体用途及使用方法,解决配置过程中可能遇到的问题,提供完整示例和扩展信息以优化设置体验。
7443 11