指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

npm和npx的区别:

npx 和 npm 是 Node.js 生态中的两个工具,它们有不同的用途和工作方式。


npm(Node Package Manager)
  • 主要用途:

    • 管理 Node.js 的包(安装、卸载、更新等)。
    • 用于全局或本地安装依赖包。
    • 管理项目的 package.json 文件中的依赖项。
  • 常用命令:

    • npm install <package> 或 npm i <package>:安装包(默认安装到 node_modules 中)。
    • npm install -g <package>:全局安装包。
    • npm run <script>:运行在 package.json 的 scripts 中定义的命令。
  • 特点:

    • 需要先安装包,才能使用包提供的命令行工具。
    • 全局安装的工具会添加到系统路径中,供全局使用。

npx
  • 主要用途:

    • 用于直接运行 Node.js 包,而无需先安装它们。
    • 常用于执行一次性命令,避免安装不必要的全局依赖。
    • 可以自动找到项目中的本地依赖并运行对应的命令。
  • 常用场景:

    • 快速运行一次性命令:
      npx create-react-app my-app
      
      (无需全局安装 create-react-app,直接运行)
    • 调用项目的本地依赖命令:
      npx eslint .
      
      (即使未全局安装 ESLint,npx 会使用本地的 ESLint)
  • 特点:

    • 自动临时下载未安装的工具,并运行它(不污染全局或本地环境)。
    • 默认从本地的 node_modules/.bin 中寻找命令,优先于全局路径。

主要区别
特性npmnpx
作用管理包的安装和项目依赖直接执行包或命令
是否安装包需要先安装才能使用可以无需安装直接运行
全局安装需要全局安装才能全局使用工具不需要全局安装,直接临时运行
优先级从全局安装的命令中查找优先使用本地安装的命令

何时用 npx?
  1. 快速运行临时工具:

    • 如果只需要运行某个命令一次,使用 npx 可以避免安装后再删除的麻烦。
    • 示例:npx json-server --watch db.json
  2. 避免全局安装:

    • 如果工具是针对单个项目使用的,而非系统范围的工具,npx 可以直接运行,不需全局安装。
    • 示例:npx prettier --write .
  3. 确保使用正确版本的工具:

    • 在项目中运行工具时,npx 会优先使用本地版本,避免与全局版本冲突。
    • 示例:npx webpack

总结
  • 使用 npm: 管理依赖包(安装、卸载)和运行项目脚本。全局安装(npm install -g create-react-app):需要提前安装工具,占用全局环境,并且版本固定。
  • 使用 npx: 直接运行命令行工具,避免安装不必要的全局包,或确保运行项目本地依赖的工具。可能临时下载,这些下载的包会存储在一个临时目录中(通常是系统缓存目录,比如 ~/.npm/_npx),并在完成执行后自动删除,所以很适合项目的初始化。

分析如下命令
npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project

这条命令使用 npx 和 degit 工具快速创建一个基于 uni-preset-vue 的 Vue 3 项目,并命名为 my-vue3-project。下面是对命令的详细解析: 这条命令使用 npx 和 degit 工具快速创建一个基于 uni-preset-vue 的 Vue 3 项目,并命名为 my-vue3-project。下面是对命令的详细解析:


命令结构:
npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project
分析:
1. npx
  • npx 直接运行工具(这里是 degit),无需提前安装。
  • 如果 degit 未安装,npx 会临时下载并运行它,避免全局安装工具。
2. degit
  • degit 是一个用来快速克隆 Git 仓库的工具,但与 git clone 不同:
    • 它会移除 .git 文件夹,创建一个干净的项目目录。
    • 常用于模板项目的初始化,避免克隆完整的 Git 历史。
3. dcloudio/uni-preset-vue#vite-ts
  • 表示需要克隆的 Git 仓库地址:
    • dcloudio/uni-preset-vue:GitHub 上的仓库路径,属于 dcloudio 组织。
    • #vite-ts:分支或标签名,指向 vite-ts 分支/标签的代码。
      • 这个分支可能包含基于 Vite 和 TypeScript 的模板代码。
4. my-vue3-project
  • 指定克隆后的项目文件夹名称。
  • 最终,degit 会将仓库代码克隆到名为 my-vue3-project 的新目录中。

执行效果:
  1. 克隆仓库:
    • 从 dcloudio/uni-preset-vue 的 vite-ts 分支下载代码。
  2. 移除 .git 文件夹:
    • 新的项目不会保留原仓库的 Git 历史信息,适合用作项目模板。
  3. 新建目录:
    • 将模板代码保存到 my-vue3-project 文件夹中。

可能的后续步骤:
  1. 进入项目目录:
    cd my-vue3-project
    
  2. 安装依赖:
    npm install
    
  3. 启动开发服务器:
    npm run dev
    

总结:

这条命令通过 degit 克隆了一个基于 uni-preset-vue 的 Vue 3 模板项目(Vite + TypeScript)。degit 是一种快速、无历史记录的克隆方式,适合从模板仓库初始化项目。通过这种方式,可以方便地开始开发符合特定配置的 Vue 3 项目。