npm介绍

server/2025/1/22 17:11:31/

npm(Node Package Manager)是 Node.js 的默认包管理工具,用于管理 JavaScript 和 Node.js 项目的依赖关系。它既是一个包管理工具,又是一个在线仓库,开发者可以通过它分享和下载开源的 JavaScript 库和工具。npm 是世界上最大的开源软件注册表,托管着超过一百万个包。

主要功能和特点

1. 包管理

npm 的核心功能是管理依赖包。它允许开发者方便地安装、更新和删除项目中的依赖包。npm 通过读取 package.json 文件来管理这些依赖。

常用的命令:

  • 安装依赖包
    npm install <package-name>
    
  • 全局安装包
    npm install -g <package-name>
    
  • 卸载依赖包
    npm uninstall <package-name>
    
2. 版本管理

npm 支持对包版本的管理,允许开发者指定依赖包的版本范围。例如,可以通过 ^(接受次版本升级)和 ~(接受修复版本升级)来控制更新策略。

  • 安装指定版本
    npm install <package-name>@<version>
    
  • 更新包到最新版本
    npm update <package-name>
    
3. 脚本管理

package.json 中,npm 可以用来定义并运行各种脚本命令,如构建、测试和部署等。例如,常见的命令如下:

  • 定义脚本
    "scripts": {"start": "node app.js","test": "mocha"
    }
    
  • 运行脚本
    npm run start
    
4. 依赖管理

package.json 文件中,开发者可以指定项目的依赖包(dependencies)和开发依赖包(devDependencies)。这使得项目在生产环境和开发环境中具有不同的依赖。

"dependencies": {"express": "^4.17.1"
},
"devDependencies": {"webpack": "^4.41.6"
}

安装生产依赖:

npm install --production

安装开发依赖:

npm install --dev
5. 包发布与管理

npm 允许开发者将自己的库或工具发布到公共仓库或私有仓库中,便于共享和重用。发布包时,可以指定版本、标签、许可证等信息。

  • 发布包
    npm publish
    
  • 登录 npm 账户
    npm login
    
6. 注册表

npm 的官方注册表(registry)是一个公共的包仓库,存储着各种开源的 JavaScript 库。开发者可以使用 npm 从注册表下载并安装这些包,也可以将自己的包上传到注册表。

默认的 npm 注册表地址是:

https://registry.npmjs.org/

你还可以使用私有注册表来管理公司内部的包,或者使用镜像来加速下载。

7. 缓存机制

npm 使用缓存来加速包的安装过程。当你首次安装某个包时,npm 会将其下载到本地缓存中,以便下次使用时可以直接从缓存中提取,避免重新下载。

  • 清除缓存
    npm cache clean --force
    
8. package-lock.json 文件

package-lock.jsonnpm 生成的一个文件,记录了每个依赖包的精确版本以及它们的依赖关系。它确保团队成员在不同环境中安装的依赖版本一致,从而避免因版本不一致导致的问题。

npm__102">常用 npm 命令总结

  • 初始化项目

    npm init
    

    该命令将创建一个新的 package.json 文件,用于管理项目的依赖和脚本。

  • 安装所有依赖

    npm install
    

    该命令将安装 package.json 中列出的所有依赖。

  • 查看已安装的包

    npm list
    
  • 查看全局安装的包

    npm list -g
    
  • 检查可更新的包

    npm outdated
    
  • 卸载包

    npm uninstall <package-name>
    
  • 更新包

    npm update <package-name>
    
  • 运行脚本

    npm run <script-name>
    

总结

npm 是一个功能强大的包管理工具,广泛用于 Node.js 项目中。它能够简化依赖管理、版本控制、包发布和项目脚本的执行。通过 npm,开发者可以方便地获取开源库、管理项目依赖、提高开发效率。尽管存在一些性能和可扩展性的问题,npm 仍然是许多 JavaScript 和 Node.js 开发者的首选工具。


http://www.ppmy.cn/server/160519.html

相关文章

将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(2.换掉付费的Event Hubs)

前情回顾&#xff1a; 将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch&#xff08;1.标准版&#xff09;-CSDN博客 前边的方案是挺好的&#xff0c;但 Azure Event Hubs 是付费服务&#xff0c;我这里只是一个获取日志进行必要的分析&#xff0c;并且不要求实…

Lsky-Pro在线图片搭建教程(Docker部署方式)

Lsky Pro+ 是一个使用 PHP 语言,采用 Laravel 框架开发的一款 Web 图片管理程序,中文名:兰空图床。如果你需要一个在线图床程序,那么这个开源项目可以帮助到你,部署流程非常简单。本章教程记录如何部署Lsky-Pro。 一、拉取镜像 docker pull halcyonazure/lsky-pro-docke…

AF3 AttentionPairBias类源码解读

AttentionPairBias 是 AlphaFold3 的一个注意力机制模块,设计用于实现全自注意力(Full Self-Attention)并结合成对表示的偏置(Pair Bias)。它在 AlphaFold3 的架构中发挥重要作用,特别是在处理蛋白质序列和空间对称性相关的任务时。 源代码: class AttentionPairBias(…

C++ ——— 模拟实现 vector 类

目录 vector 类的框架 无参数的构造函数 析构函数 获取有效数据个数 获取容量 重载 [] 运算符 可读可写版本 只可读版本 扩容 尾插 实现迭代器 可读可写版本 只可读版本 自定义设置size长度和内容 在任意位置插入 删除任意位置的数据 赋值重载 vector 类的框…

使用递归处理无限自关联表

无限自关联表 所谓的无限自关联表就是类似于下图&#xff0c;有parent_id的这种&#xff0c;需要分级显示 实体类 实体类需要添加一个属性--下级列表 List<SysMenu> children;这个属性中是我们该实体的孩子结点 工具类处理分级树 public class MenuHelper {public st…

Python绘制数据地图-MovingPandas

MovingPandas 是一个用于时空数据分析的 Python 库&#xff0c;它扩展了 Pandas 和 GeoPandas&#xff0c;使得处理和分析带有时间戳的地理数据变得更加方便。虽然 MovingPandas 本身不直接提供数据可视化功能&#xff0c;但你可以结合其他库如 matplotlib、folium 或 plotly 来…

Stable Diffusion 提示词编写技巧及示例

Stable Diffusion 提示词&#xff08;Prompt&#xff09;的编写技巧及示例是生成高质量图像的关键。以下将结合我搜索到的资料&#xff0c;详细说明提示词的编写规则、技巧和示例。 一、提示词的基本规则与格式 分隔符&#xff1a;提示词之间需用英文逗号&#xff08;,&#…

五、华为 RSTP

RSTP&#xff08;Rapid Spanning Tree Protocol&#xff0c;快速生成树协议&#xff09;是 STP 的优化版本&#xff0c;能实现网络拓扑的快速收敛。 一、RSTP 原理 快速收敛机制&#xff1a;RSTP 通过引入边缘端口、P/A&#xff08;Proposal/Agreement&#xff09;机制等&…