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 文件来进行个性化设置。
相关推荐
爱勇宝11 小时前
我做了一个只用来搜歌词的小 App
android·前端·后端
甲维斯11 小时前
用AI还原《坦克大战》并3D化升级!
前端·人工智能·游戏开发
IT_陈寒12 小时前
SpringBoot自动配置坑了我一晚上,原来问题出在这
前端·人工智能·后端
kyriewen12 小时前
AI 生成的代码能跑就行?这 5 个坑迟早炸
前端·javascript·ai编程
谷子在生长13 小时前
纯血鸿蒙自定义弹窗最佳实践:从「到处复制」到「一行调用」
前端·harmonyos
壹方秘境13 小时前
我用Go语言开发了一个跨平台的HTTPS抓包和调试工具
前端·后端·ios
神秘面具男13 小时前
HarmonyOS 6.0跨端远程控制
前端·后端
枫树下x13 小时前
NestJS基础框架
前端
胡志辉13 小时前
从v8源码和react深入浅出理解 JavaScript 作用域链与闭包
前端·javascript
天蓝色的鱼鱼13 小时前
React Router v8 来了:react-router-dom 没了,老项目该怎么迁移?
前端·react.js