Node.js中npx命令的使用方法及场景分析

 更新时间:2021年08月02日 09:15:32   作者:Fitz  
NPM(Node Package Manager) 是Node.js提供的一个包管理器, 可以使用 NPM 来安装 node.js 包 ,npm 是从5.2版开始, 增加(自带)了 npx 命令,本文给大家分享Node.js npx命令使用,需要的朋友一起看看吧

npx使用教程

今晚在学习Vue-Cli时, 由于突发奇想想试试最新的@4.x.x版本, 但是本地全局安装的脚手架版本是@2.x.x的, 因为不想污染全局于是就想到用npx命令, 一路上踩坑不断, 为了以后能够更好的使用npx并区分其跟npm的指令, 就有了本篇笔记

npm 是从5.2版开始, 增加(自带)了 npx 命令。 如果发现没安装请手动安装:

npm i -g npx

npm与npx的概念

  • NPM(Node Package Manager) 是Node.js提供的一个包管理器, 可以使用 NPM 来安装 node.js 包
  • NPX(Node Package Excuted) 可以理解为用于临时安装并执行某个包的一个工具

总结的来说:

  • npm专注于安装包
  • npx专注于执行包, 并且是较特殊的执行

npx的使用场景(对比npm的一些优势)

从几个使用场景出发, 希望能够有对应您当前的场景, 这样就能直接套用了

使用场景1: 想用项目中已经安装好的某个包, 但是不能直接执行(因为没有全局安装, 涉及环境变量的问题)

对于这个场景, 有些笨方法:

  • 到项目的根目录下执行: node-modules/.bin/包对应的脚本
  • 配置npm script: 在package.jsonscripts中将方法1添加进脚本, 然后就能在需要的时候执行"npm run 自定义指令"以快速执行啦, 本质上只是对方法1的改进

更优雅的方法, 就是使用npx命令啦:

npx <包对应的命令>

# 以less编译为例:
npx lessc -v  # 查看当前项目下less编译器的版本

使用场景2: 已全局安装某个包, 项目又已安装了不同版本的某个包, 想用项目的那个版本

以我今晚的踩坑作为第二个使用场景, 我本地已经全局安装了Vue脚手架的@2.x.x版本, 但是我想用并已经在本地项目文件目录中安装了最新的@4.x.x版本, 即:

# 已经执行过
npm i -g vue-cli@2
vue -V # vue@2.9.6
# 已经执行过

cd my-project
npm i -D @vue/cli@4
vue -V # vue-cli@4.5.13

这时, 如果使用vue -V会发现使用的是全局的版本, 因为npm默认会执行全局中的包。如果想使用项目已经安装的那个版本就直接执行如下命令:

npx <包对应的命令>

# 以vue-cli为例:
npx vue create my-project

使用场景3: 不想全局或在项目中安装某个包, 只想临时使用

对于这种场景, npx就是必要的选择。npx会将要用的下载到一个临时目录, 使用完毕后自动删除, 还是以Vue-Cli为例: 这次的我突发奇想想看看React脚手架的项目文件结构, 由于我还没学, 所以本地和全局都没有安装(只是临时想用脚手架创建一个React项目)

npx create-react-app my-react-project #react脚手架将会在项目搭建完后自动被删除掉

使用场景4: 临时使用特定版本的包(本地没有安装)

如题所示, 这里以我突发奇想想使用Vue脚手架的@3.x.x版本, 但是我全局已经安装了@2.x.x版本

cd my-vue-project   # 进入我的vue项目
npx @vue/cli@3 create big-project   # 利用vue-cli的3.x版本创建一个名为big-project的项目

关于npx的一些参数

  1. 安装并使用特定版本: npx 包@版本号 包对应的命令
  2. --no-install 强制使用本地包, 本地包如果没安装就会报错: npx --no-install vue create my-project
  3. --ignore-existing 强制安装使用远程模块: npx --ignore-existing vue create my-project
  4. -p 对于一次性安装多个包,使用参数-p: npx -p @vue/cli -p less 切记: 安装多个包一定要使用 -p
  5. -c 在一次性安装并使用多个包的场景中: 在低版本下执行npx -p vue-cli -p less lessc -v & vue -V命令, 有可能只有第一个命令项能正常执行, 即:只打印出less编辑器的版本。npx的参数-c就是为了告诉npx执行指定的所有命令的范围: npx -p vue-cli -p less -c "lessc -v & vue -V", 这样就能保证绝对的安全了。 注: &代表两个命令都执行, |代表前面执行成功后面命令就不执行

这一小节中最常用、重要的是第5点, 根据此总结: 不管安装的包、命令的个数个数是多少(哪怕只安装1个包), 严格遵守npx -p 包1 -p 包2 -p 包n -c "命令1 & 命令2 & 命令n" 一定没错

到此这篇关于Node.js中npx命令的使用方法、场景的文章就介绍到这了,更多相关Node.js npx命令使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • NodeJs form-data格式传输文件的方法

    NodeJs form-data格式传输文件的方法

    这篇文章主要介绍了NodeJs form-data格式传输文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • nodejs和npm版本不匹配:ERROR: npm v9.5.1 is known not to run on Node.js

    nodejs和npm版本不匹配:ERROR: npm v9.5.1 is known not to run

    本文主要介绍了nodejs和npm版本不匹配:ERROR: npm v9.5.1 is known not to run on Node.js,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • WebSocket Node构建HTTP隧道实现实例

    WebSocket Node构建HTTP隧道实现实例

    这篇文章主要为大家介绍了WebSocket Node构建HTTP隧道实现实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • NodeJs之word文件生成与解析的实现代码

    NodeJs之word文件生成与解析的实现代码

    这篇文章主要介绍了NodeJs之word文件生成与解析的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Node.js使用gm拼装sprite图片

    Node.js使用gm拼装sprite图片

    这篇文章主要介绍了Node.js使用gm拼装sprite图片的相关资料,需要的朋友可以参考下
    2017-07-07
  • Node.js 服务器端应用开发框架 -- Hapi.js

    Node.js 服务器端应用开发框架 -- Hapi.js

    Hapi.js 是一个用来构建基于 Node.js 的应用和服务的富框架,使得开发者把重点放在便携可重用的应用逻辑而不是构建架构。内建输入验证、缓存、认证和其他 Web 应用开发常用的功能。
    2014-07-07
  • 在NodeJs中使用node-schedule增加定时器任务的方法

    在NodeJs中使用node-schedule增加定时器任务的方法

    这篇文章主要介绍了从零开始在NodeJs中使用node-schedule增加定时器任务的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • npm配置国内镜像资源+淘宝镜像的方法

    npm配置国内镜像资源+淘宝镜像的方法

    这篇文章主要介绍了npm配置国内镜像资源+淘宝镜像的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Express.js 全局错误处理实现

    Express.js 全局错误处理实现

    本文主要介绍了Express.js 全局错误处理实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Node.js实现用户评论社区功能(体验前后端开发的乐趣)

    Node.js实现用户评论社区功能(体验前后端开发的乐趣)

    这篇文章主要介绍了Node.js实现用户评论社区(体验前后端开发的乐趣) ,需要的朋友可以参考下
    2019-05-05

最新评论