npx的介绍

2023-11-13

npx 是 npm5.2.0版本新增的一个工具包,定义为npm包的执行者,相比 npm,npx 会自动安装依赖包并执行某个命令。

主要功能有2个

1. 临时安装软件包执行后删除软件包

例如: create-react-app 脚手架创建一个 react 项目

使用npm

# 第一步
npm i -g create-react-app

# 第二步
create-react-app my-react-app

使用npx

# 使用npx
npx create-react-app my-react-app
    1. npx 会在当前目录下的./node_modules/.bin里去查找是否有可执行的命令,
    1. 没有找到的话再从全局里查找是否有安装对应的模块,
    1. 全局也没有的话就会自动下载对应的模块,如上面的 create-react-app,npx 会将 create-react-app 下载到一个临时目录,用完即删,不会占用本地资源

npm自带npx,可以直接使用,如果没有可以手动安装一下:npm i -g npx

其他

1. 调用项目安装的模块

一般来说,调用 mocha ,只能在项目脚本和 package.json 的scripts字段里面, 如果想在命令行下调用,必须像下面这样。

# 在项目根目录
$ node-modules/.bin/mocha --version
# npx让项目内部安装的模块用起来更方便
npx mocha --version

npx 的原理:npx运行的时候,会到node_modules/.bin路径和环境变量 P A T H 里面,检查命令是否存在。由于 n p x 会检查环境变量 PATH 里面,检查命令是否存在。由于 npx 会检查环境变量 PATH里面,检查命令是否存在。由于npx会检查环境变量PATH,所以系统命令也可以调用。

// 等同于 ls
npx ls

注:Bash 内置的命令不在$PATH里面,所以不能用。比如,cd是 Bash 命令,因此就不能用npx cd。

2. npx命令参数
2-1 –no-install 告诉npx不要自动下载,也就意味着如果本地没有该模块则无法执行后续的命令。
npx --no-install create-react-app my-react-app
// not found: create-react-app
2-2 –ignore-existing 告诉npx忽略本地已经存在的模块,每次都去执行下载操作,也就是每次都会下载安装临时模块并在用完后删除。
2-3 -p 用于指定npx所要安装的模块,它可以指定某一个版本进行安装
# 从 npm 下载这个版本的 node,使用后再删掉。
npx -p node@12.0.0 node index.js
# 先指定安装node@12.0.0
# 然后再执行node index.js命令。
# 同时安装多个模块:
npx -p lolcatjs -p cowsay
2-3 -c 告诉npx所有命令都用npx解释
# 无 -c 则会报错,因为第一项命令cowsay hello默认有npx解释,但第二项命令localcatjs会有shell解释,此时lolcatjs并没有全局安装,所有就报错了
npx -p lolcatjs -p cowsay -c 'cowsay hello | lolcatjs'

将环境变量带入所要执行的命令。举例来说,npm 提供当前项目的一些环境变量,可以用下面的命令查看。

npm run env | grep npm_
-c参数可以把这些 npm 的环境变量带入 npx 命令。

npx -c ‘echo “$npm_package_name”’

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

npx的介绍 的相关文章

随机推荐

  • 本地搭建web服务器、个人博客并发布公网访问

    文章目录 前言 1 安装套件软件 2 创建网页运行环境 指定网页输出的端口号 3 让WordPress在所需环境中安装并运行 生成网页 4 装修 个人网站 5 将位于本地电脑上的网页发布到公共互联网上 前言 在现代社会 网络已经成为我们生活
  • Spring Boot + Vue的网上商城之登陆认证

    Spring Boot Vue的网上商城之登陆认证 本篇博客介绍了如何使用Spring Boot和Vue来实现网上商城的登陆认证功能 下面是本文的主要内容总结 后端实现 创建Spring Boot项目 并添加Spring Security和
  • 为什么spring单例模式可以支持多线程并发访问

    为什么spring单例模式可以支持多线程并发访问 1 spring单例模式是指 在内存中只实例化一个类的对象 2 类的变量有线程安全的问题 就是有get和set方法的类成员属性 执行单例对象的方法不会有线程安全的问题 因为方法是磁盘上的一段
  • Vulnhub靶机-BLACKLIGHT

    项目地址 http download vulnhub com blacklight BLACKLIGHT ova 靶机渗透 网络选择桥接模式 使用命令 arp scan l nmap 192 168 0 130 使用dirb遍历网站目录结构
  • Linux自学笔记

    Linux自学笔记 06 常用命令 文件目录类 Linux自学笔记 01 文件系统和目录结构 Linux自学笔记 02 VIM编辑器的安装与使用 Linux自学笔记 03 Linux网络配置 Linux自学笔记 04 远程登录 Linux自
  • 高速模数转换器(ADC)的INL/DNL测量

    摘要 尽管积分非线性和微分非线性不是高速 高动态性能数据转换器最重要的参数 但在高分辨率成像应用中却具有重要意义 本文简要回顾了这两个参数的定义 并给出了两种不同但常用的测量高速模数转换器 ADC 的INL DNL的方法 近期 许多厂商推出
  • 微信小程序 ---- 【invalid credential, access_token is invalid】

    报错返回 errcode 40001 errmsg invalid credential access token is invalid or not latest rid 6004f3da 1529ba72 5c345f67 报错原因 a
  • oled拼接屏有哪些安装方法?

    嘉峪关是一个历史悠久的城市 也是一个旅游胜地 为了更好地展示城市的文化和旅游资源 嘉峪关市政府决定在市区的重要场所安装oled拼接屏 oled拼接屏是一种高清晰度的显示屏 具有高亮度 高对比度 高色彩饱和度等优点 它可以将图像和视频以更清晰
  • qtp的基本使用方法(1)

    1 action qtp为每一个action生成相应的测试文件和目录 对象库也是和action绑定的 用action 来划分和组织测试流程 编辑action 修改action的名字 action properties 增加action in
  • StartSSL CA证书签名 和 Tomcat Https访问 全过程说明

    第1章 准备工作 IP地址 外网服务器的IP 如X X 47 xx 作用 1 解析域名 2 部署Tomcat7 域 名 将域名 如samuscasting cn 解析 映射到外网IP 注 1 记住购买域名所使用的邮箱 原因 认证机构对域名做
  • QGIS编译(跨平台编译)之五十一:MacOS环境下安装Python、pyqt5、pyqt5-tools等

    目录 1 安装背景 2 卸载Python 3 下载Python3 9 4 安装Python3 9 5 安装pyqt5 6 安装pyqt5 tools
  • 微信小程序 分享图片大小处理

    1 在分享的page 添加 canvas 标签
  • c++单链表的创建、输出、插入、删除操作

    混子来了 单链表的创建 首先单链表的定义就不再赘述了 本文利用带头节点 尾插法的方法进行创建 同时注意头节点在此的重要性 即所有操作都要通过头节点来实现 头节点的值绝对不能被改变 结点的定义 struct ListNode 定义节点 int
  • 最小的前端开发框架 Vanilla JS

    刚刚在看前端文章的时候看到了Vanilla JS 这是什么高端框架 打开了谷鸽google搜索 果然是发现了不得了的技术 VanillaJS是库 框架免费javascript的术语 它有时具有讽刺意味地被称为库 这是为那些可能会盲目使用不同
  • HTML5 Web Audio Api 声音登陆

    之前最早时候给过一个识别hz的demo 今天讲那个demo结合上一篇说的振荡器 做了个声音登录的小demo 原理就是2w hz人听不见 其实1w9左右就很轻微了 直接上代码 识别器 限电脑 span style font size 18px
  • 多线程:获取和设置线程名称

    获取线程名称 第一种方式 使用Thread类中的getName方法 有些线程因为并不是继承Thread的 不能直接使用getName 比如main线程 此时需要先使用Thread类中的currentThread方法 这是一个静态方法 获取当
  • List对象集合如何自定义排序

    List对象集合自定义排序 最近开发个人博客项目的时候 遇到了一个难点 如何排序分类Type集合呢 Type java Data public class Type private Long id private String name p
  • Vue.js--组件注册(全局注册、局部注册)、表行组件、组件中的data、组件数据的共享问题详解

    组件 组件 Component 是 Vue js 最强大的功能之一 组件可以扩展 HTML 元素 封装可重用的代码 组件系统让我们可以用独立可复用的小组件来构建大型应用 几乎任意类型的应用的界面都可以抽象为一个组件树 组件注册 组件与Vue
  • angular随笔 之angular添加ng-zorro-antd组件时相关问题

    最近新建angular项目在添加ng zorro antd组件时9 0 0版本以上 会出现无法添加ng zorro antd组件 一添加ng add ng zorro antd就会报如下错误 Error ng zorro antd 0 0
  • npx的介绍

    npx 是 npm5 2 0版本新增的一个工具包 定义为npm包的执行者 相比 npm npx 会自动安装依赖包并执行某个命令 主要功能有2个 1 临时安装软件包执行后删除软件包 例如 create react app 脚手架创建一个 re