npm (Node Package Manager) 简介

npm 是 Node.js 的默认包管理工具,用于管理和分发JavaScript库和工具。它允许开发者轻松安装、更新、配置和卸载这些包。npm 提供了一个命令行客户端,同时也维护着一个大型的在线软件注册表(npm registry),其中包含了成千上万的开源包。

npm 的基本使用

安装与初始化
  1. 安装 Node.js 和 npm

    • 通常安装了 Node.js 后,npm 也会一并安装。你可以通过以下命令检查是否已经安装以及版本信息:

      bash 复制代码
      node -v
      npm -v
  2. 创建新项目

    • 在项目的根目录下运行 npm init 命令,可以创建一个新的 package.json 文件,这个文件定义了项目的元数据及依赖关系。

      bash 复制代码
      npm init -y # 使用默认设置快速初始化
安装依赖包
  1. 安装全局包

    • 全局安装的包可以在任何地方使用,例如CLI工具。

      bash 复制代码
      npm install -g <package-name>
  2. 安装本地包

    • 本地安装的包只会在当前项目中可用,并且会被添加到 package.jsondependenciesdevDependencies 中。

      bash 复制代码
      npm install <package-name> --save    # 添加到dependencies
      npm install <package-name> --save-dev # 添加到devDependencies
  3. 安装特定版本的包

    • 可以指定要安装的具体版本号或版本范围。

      bash 复制代码
      npm install <package-name>@<version>
  4. 安装所有依赖

    • 当克隆了一个已有 package.json 的项目时,可以通过以下命令安装所有列出的依赖。

      bash 复制代码
      npm install
更新与卸载
  1. 更新依赖包

    • 更新 package.json 中列出的所有依赖到最新版本。

      bash 复制代码
      npm update
  2. 卸载依赖包

    • 卸载不再需要的包,并从 package.json 中移除。

      bash 复制代码
      npm uninstall <package-name>
包的发布
  1. 登录 npm 账户

    • 如果你想发布自己的包,首先需要登录。

      bash 复制代码
      npm login
  2. 发布包

    • 确保你的 package.json 文件配置正确后,可以使用以下命令发布。

      bash 复制代码
      npm publish
其他常用命令
  • 查看已安装的包

    bash 复制代码
    npm list
    npm list -g --depth=0 # 查看全局安装的包
  • 清理缓存

    bash 复制代码
    npm cache clean --force
  • 查找过时的包

    bash 复制代码
    npm outdated
  • 运行脚本

    • package.json 文件中的 scripts 字段可以定义一些自定义命令,比如启动应用、构建等。

      bash 复制代码
      npm run <script-name>

最佳实践

  • 锁定版本 :使用 package-lock.json 文件来确保不同环境中安装的依赖版本一致。
  • 安全更新 :定期运行 npm audit 来检查并修复潜在的安全漏洞。
  • 避免过多依赖:尽量减少不必要的依赖,保持项目的简洁性。
  • 使用 .npmrc 文件 :对于私有仓库或其他特殊配置,可以使用 .npmrc 文件来进行个性化设置。
相关推荐
To_OC1 小时前
面试被问了三回三栏布局,这次我终于把 BFC 那层窗户纸捅破了
前端·css·面试
To_OC1 小时前
啃完 TS 工具类型我发现:Pick 和 Omit 原来就是一层窗户纸
前端·面试·typescript
风月说与山鬼3 小时前
三、大括号语法
前端·react.js
kyriewen3 小时前
我把最常踩的8个CORS跨域报错整理了一遍——第8个去年还不存在
前端·javascript
Csvn3 小时前
🕰️ 闭包 + setTimeout 的 5 个经典陷阱:为什么定时器看到的永远不是最新的值?
前端
lilian2334 小时前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
CarIise4 小时前
CSS选择器与样式关联
前端·css·tensorflow
里欧跑得慢5 小时前
CSS 模块化架构的演进:BEM、CSS Modules 到 CSS-in-JS 的反思
前端·css·flutter·web·css-in-js
IT_陈寒6 小时前
Vue的computed属性把我坑惨了,原来我一直用错姿势
前端·人工智能·后端