你真的会用 npx 吗❓❓❓

这篇具有很好参考价值的文章主要介绍了你真的会用 npx 吗❓❓❓。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hello,大家好!

日常开发中大家应该经常使用 npm install xxx 来安装包依赖,那是否注意到npm升级到 npm@5.2.0 之后,在 npm 二进制命令旁边安装了一个 npx 二进制文件呢?

没有 npx 命令前

在没有 npx 命令之前,我们想要执行项目中安装的可执行脚本,以安装 React 创建项目的脚手架 create-react-app 为例,通常使用下面的做法:

做法一,使用全局安装然后再创建项目:

npm install create-react-app -g

create-react-app test-react

缺点

  1. create-react-app 安装项目本身是一个低频次操作,全局安装不具备必要性,同时如果其它低频次工具也全局安装,势必会造成全局 path 混乱和冗余。
  2. npm 生态系统越来越倾向于将工具安装为项目本地 devDependencies ,让每个项目独立管理工具的版本,而不是都是用全局安装的固定版本。

做法二,不全局安装,需要先进入脚手架目录,再调用这个命令:

npm install create-react-app -D

cd node-modules/.bin/

create-react-app test-react

或者将 create-react-app 命令添加到 package.jsonscripts

缺点

这样做每个项目可以安装不同的脚手架版本,但操作还是略微繁琐,同时每个项目都安装一遍脚手架工具也是不必要的。

npx 就是为了解决这些问题,下面我们来了解一下。

npx 基本用法

了解基本用法之前,我们先看看 npx 的安装。

安装

在安装完 node 以及 npm 后,会默认安装 npm 相同版本号的 npx 工具,当然也可以独立安装:

npm install -g npx

执行命令

npx create-react-app

使用 npx 执行一个工具非常简单,不需要提前安装 create-react-app ,直接使用 npx 就可以执行这个工具,这源于 npx 的查找流程:

  1. 先自动查找当前项目依赖包中的可执行文件,也就是 node-modules/.bin/
  2. 如果找不到,就会去全局 $PATH 中查找,所以全局安装的包不会重复安装;
  3. 如果依然找不到,就会帮你临时安装,执行完命令后再删除包。

拥有 npx 后,当我们开发一个命令,就不用让用户先安装再使用了,给用户添加负担。👌

常用参数

同时,npx 还有一些常用的参数:

--no-install 和--ignore-existing 参数

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

npx --no-install create-react-app

反过来,如果忽略本地的同名模块,强制安装使用远程模块,可以使用--ignore-existing参数。比如,本地已经全局安装了create-react-app,但还是想使用远程模块,就用这个参数。

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

-p 参数

-p参数用于指定 npx 所要安装的模块版本。

npx -p node@18.16.1 node -v 

上面命令先指定安装node@18.16.1,然后再执行node -v命令。

-p参数对于需要安装多个模块的场景很有用。

npx -p lolcatjs -p cowsay 'cowsay hello'

cowsay 工具会在命令行中生成羊图案和对象的文字,lolcatjs 工具会将这只羊上色

-c 参数

如果 npx 安装多个模块,默认情况下,所执行的命令之中,只有第一个可执行项会使用 npx 安装的模块,后面的可执行项还是会交给 Shell 解释。

npx -p lolcatjs -p cowsay 'cowsay hello | lolcatjs'
# 报错

上面代码中,cowsay hello | lolcatjs执行时会报错,原因是第一项cowsay由 npx 解释,而第二项命令localcatjs由 Shell 解释,但是lolcatjs并没有全局安装,所以报错。

-c参数可以将所有命令都用 npx 解释。有了它,下面代码就可以正常执行了。

npx -p lolcatjs -p cowsay -c 'cowsay hello | lolcatjs'

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

npm run env | grep npm_ # 查询npm的环境变量,并筛选出以 npm_ 开头的变量

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

npx -c 'echo "$npm_package_name"'

上面代码会输出当前项目的项目名。

npx 其它用法

使用不同版本的 node

利用 npx 可以下载模块这个特点,可以指定某个版本的 Node 运行脚本。它的窍门就是使用 npm 的 node 模块。

npx node@18.16.1 -v

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

使用这个包,可以直接在一个 node 环境下,使用不同版本的 node 测试开发的包是否正常运行,当然也可以使用 nvm 等 node 管理器,但是需要先切换再测试的方式效率明显不如上面的命令。

执行 GitHub 源码

npx 还可以执行 GitHub 上面的模块源码。

npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32
# 执行仓库代码
npx github:piuccio/cowsay hello

注意,远程代码必须是一个模块,即必须包含package.json和入口脚本。

本文具体参考了以下文章:文章来源地址https://www.toymoban.com/news/detail-784071.html

  • Introducing npx: an npm package runner | by Kat Marchán | Medium
  • GitHub - npm/npx: npm package executor
  • npx 使用教程 - 阮一峰的网络日志

到了这里,关于你真的会用 npx 吗❓❓❓的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Spring面试全家桶】@Primary注解你真的会用吗

    @Primary注解是Spring Framework中的一个注解,用于标记具有多个实例的Bean的主要实例。以下是关于@Primary注解的知识点: @Primary注解的作用:@Primary注解用于标记具有相同类型的多个实例中的主要实例。当一个Bean需要注入这种类型的Bean时,Spring会注入使用@Primary注解标记的主要实

    2024年01月18日
    浏览(13)
  • linux入门练级篇:ls指令你真的会用吗?

    linux入门练级篇:ls指令你真的会用吗?

    🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介::讲解linux的几个入门指令,举例介绍. whomi 命令全称: who am I 用法: 顾名思义,我是谁? 指令功能 : 该命令用于查看当前的操作用户,我们平常使用的windows操作系统,也是分

    2024年02月07日
    浏览(10)
  • 自动化测试学习(七)-正则表达式,你真的会用吗?

    自动化测试学习(七)-正则表达式,你真的会用吗?

    目录 一、正则表达式在python中如何使用 二、用正则表达式匹配更多模式 三、常用字符分类的缩写代码 总结 所谓正则表达式(regex),就是一种模式匹配,学会用正则匹配,就可以达到事半功倍的效果。 1.导入正则表达式模块 2.创建正则表达式对象,以电话号码为例 Tips:

    2023年04月09日
    浏览(21)
  • 你真的会用iPad吗,如何使iPad秒变生产力工具?在iPad上用vscode写代码搞开发

    你真的会用iPad吗,如何使iPad秒变生产力工具?在iPad上用vscode写代码搞开发

    目录 前言 视频教程 1. 本地环境配置 2. 内网穿透 2.1 安装cpolar内网穿透(支持一键自动安装脚本) 2.2 创建HTTP隧道 3. 测试远程访问 4. 配置固定二级子域名 4.1 保留二级子域名 4.2 配置二级子域名 5. 测试使用固定二级子域名远程访问 6. iPad通过软件远程vscode 6.1 创建TCP隧道 7. ipad远

    2023年04月14日
    浏览(65)
  • npx是什么命令?npx和npm有什么区别?

    一、npx介绍及使用 平时安装node模块的时候,经常使用的命令是npm。其实还有另外一个命令,叫做npx。网上的说法都是:npx是npm命令的升级版本,功能非常强大。 1、npx 是什么 npx是一个由Node.js官方提供的用于快速执行npm包中的可执行文件的工具。它可以帮助我们在不全局安装

    2024年02月07日
    浏览(9)
  • React:从 npx开始

    React:从 npx开始

    使用 npm 来创建第一个 recat 文件( react-demo 是文件名,可以自定义) npx create-react-app react-demo npx是 npm v5.2 版本新添加的命令,用来简化 npm 中工具包的使用 原始: 全局安装 npm i -g create-react-app 2 在通过脚手架的命令来创建 React 项目 现在:npx 调用最新的 create-react-app 直接创建

    2024年02月16日
    浏览(7)
  • npx 和 npm 区别

    解决 npm 之前的执行包中的命令行需要先下载的问题,如果有多个不同版本的包就需要下载多次 比如已经装了全局的 webpack 1.x 版本并且还要继续使用,还需要装个 webpack 4.x 使用的其相应功能,这个时候可以不装在全局,用 npx webpack 代替 webpack 命令,互不干扰。 避免下载多个

    2024年02月05日
    浏览(10)
  • Nodejs中npx简介和作用

    一、npx简介 npm从5.25.2版开始,增加了 npx 命令。方便了我在项目中使用全局包。 二、安装 Node安装后自带npm模块,可以直接使用npx命令。如果不能使用用,就要手动安装一下。 npm install -g npx 三、使用 npx想要解决的主要问题,就是调用项目内部安装的模块。比如,项目内部安

    2024年02月12日
    浏览(6)
  • [npm] npx 介绍与使用说明

    说到 npm 就离不开社区文化,那什么是社区文化? 社区文化的意思是:拥有共同职业或兴趣的人群,自发组织在一起,通过分享信息和资源进行合作与交流。虚拟社区的参与者经常会在线讨论相关话题,或访问某些网站。 世界上最大的社区应该就是 GitHub。通过 GitHub 来分享源

    2024年02月07日
    浏览(11)
  • 中文编程最高境界,不用编程,会用excel就会用,香不香?

    中文编程最高境界,不用编程,会用excel就会用,香不香?

    一直以来,关于中文编程的争议从未消停过。现如今,中文编程发展又是如何? ★为了实现中文编程,从未停下脚步 我们知道,中国人一直以来为了实现中文编程付出了不懈的努力,前前后后研发了几十种中文编程语言。比如我们常见的易语言、习语言、丙正正、O语言等等

    2024年02月05日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包