前端工程化(四)前端包管理工具全解析:npm、npx与pnpm

262 阅读3分钟

大家好,我是Ysh,谨以此系列文章献给正在找工作的开发兄弟们,愿大家年年高升无寒冬。

创作不易,还请兄弟们多多点赞、收藏、关注 三联走起~

npm:安装包的不同方式及其适用场景

npm(Node Package Manager)是Node.js的默认包管理工具,用于管理JavaScript项目的依赖。它允许开发者轻松地安装、更新和删除项目依赖。

基本使用

  1. 安装npm

    如果你已经安装了Node.js,npm会自动安装。你可以通过以下命令检查npm版本:

    npm -v
    
  2. 初始化项目

    使用以下命令初始化一个新的Node.js项目,这将生成一个 package.json 文件:

    npm init
    
  3. 安装依赖

    • 本地安装:默认情况下,npm会将依赖安装到 node_modules 目录,并在 package.json 文件中添加相应的依赖条目。

      npm install lodash
      

      你也可以使用 -S(或 --save)来显式地将依赖保存到 package.json 中:

      npm install lodash --save
      
    • 全局安装:某些工具或包需要全局安装,以便在命令行中全局可用。使用 -g(或 --global)选项来全局安装依赖。

      npm install -g create-react-app
      
    • 开发依赖:使用 -D(或 --save-dev)选项将依赖安装为开发依赖,这些依赖仅在开发环境中需要。

      npm install eslint --save-dev
      
  4. 更新和卸载依赖

    • 更新依赖

      npm update lodash
      
    • 卸载依赖

      npm uninstall lodash
      

适用场景

  • npm适用于管理任何Node.js项目的依赖,无论是前端项目还是后端项目。
  • 它支持本地和全局安装,以及不同的安装选项(如 --save--save-dev),满足不同场景的需求。

npx:如何通过npx执行本地安装的命令

npx 是npm版本5.2.0之后引入的一个工具,它允许你直接运行npm包中的可执行文件,而无需全局安装这些包。这在一次性使用工具或避免全局污染时非常有用。

基本使用

  1. 运行本地安装的包

    例如,运行本地安装的 create-react-app

    npx create-react-app my-app
    
  2. 运行未安装的包

    如果包未安装,npx会临时下载并执行它。例如,运行 http-server

    npx http-server
    
  3. 避免版本冲突

    使用特定版本的包而不影响全局安装的版本:

    npx create-react-app@3.4.1 my-app
    

适用场景

  • 当需要运行一次性工具或脚本时,npx是一个方便的选择。
  • 在CI/CD管道中,npx可以确保使用特定版本的工具,而无需全局安装。

pnpm:pnpm的工作原理及其在大项目中的应用

pnpm 是一个高性能的包管理工具,它通过硬链接和符号链接来节省磁盘空间和加快安装速度。与npm和yarn不同,pnpm可以确保不同项目之间共享相同版本的依赖,从而提高效率。

安装pnpm

  1. 全局安装

    npm install -g pnpm
    
  2. 初始化项目

    使用 pnpm init 初始化一个新项目:

    pnpm init
    

基本使用

  1. 安装依赖

    • 本地安装:

      pnpm install lodash
      
    • 全局安装:

      pnpm add -g create-react-app
      
    • 开发依赖:

      pnpm add eslint --save-dev
      
  2. 更新和卸载依赖

    • 更新依赖:

      pnpm update lodash
      
    • 卸载依赖:

      pnpm remove lodash
      

工作原理

  • 硬链接和符号链接:pnpm在安装依赖时会在全局存储中创建硬链接或符号链接,从而节省磁盘空间和加快安装速度。
  • 严格的依赖树:pnpm确保每个包的依赖关系是严格的,避免了“依赖地狱”问题。

在大项目中的应用

  • 节省磁盘空间:对于包含大量依赖的大项目,pnpm可以显著减少磁盘空间占用。
  • 加快安装速度:pnpm通过共享相同版本的依赖,提高了安装速度,特别是在CI/CD管道中。