npm与包

在 Node.js 的生态系统中,npm(Node Package Manager)扮演着至关重要的角色。它不仅是管理项目依赖的强大工具,还提供了丰富的第三方库和工具,极大地提高了开发效率。本文将详细介绍 npm 的基本概念、常用命令以及如何创建和发布自己的 npm 包。

什么是 npm?

基本概念

npm 是随同 Node.js 一起安装的 JavaScript 包管理工具。它允许开发者轻松地安装、共享和分发代码,并且通过 package.json 文件来跟踪项目的依赖关系及其版本号。npm 提供了数以万计的开源包,覆盖了从基础功能到复杂框架的各个方面。

npm 注册表

npm 注册表是一个巨大的在线数据库,包含了所有公开可用的 npm 包。当你使用 npm install 安装某个包时,npm 会自动从注册表下载该包及其所有依赖项。

npm 常用命令

初始化项目

要开始一个新的 npm 项目,首先需要初始化一个 package.json 文件。这个文件记录了项目的元数据和依赖信息。

npm init

按照提示输入项目名称、版本号等信息后,npm 将自动生成 package.json 文件。你也可以使用 -y 参数跳过交互式配置:

npm init -y

安装依赖

安装指定包

可以通过以下命令安装任何 npm 包:

npm install <package-name>

例如,安装 Express 框架:

npm install express

此命令会在 node_modules 目录下添加 Express 及其依赖,并更新 package.json 文件中的 dependencies 字段。

全局安装

如果你想在整个系统范围内使用某个包(如命令行工具),可以使用 -g 标志进行全局安装:

npm install -g <package-name>

例如,安装 TypeScript 编译器:

npm install -g typescript

卸载依赖

卸载不再需要的包同样简单:

npm uninstall <package-name>

如果该包是全局安装的,则加上 -g 标志:

npm uninstall -g <package-name>

更新依赖

为了保持项目的最新状态,定期更新依赖是个好习惯:

npm update <package-name>

如果不指定包名,则会更新所有依赖至最新的兼容版本:

npm update

查看已安装的包

查看当前项目中已安装的所有包及其版本号:

npm list

若要仅列出顶级依赖(即直接在 package.json 中声明的依赖),可以使用:

npm list --depth=0

对于全局安装的包,可以使用 -g 标志:

npm list -g --depth=0

创建并发布 npm 包

准备工作

  1. 编写代码:确保你的模块已经准备好被其他人使用。通常包括一个入口文件(如 index.js)、测试文件(可选)以及文档。
  2. 编写 package.json:除了基本信息外,还需要定义 main 字段指向主文件,以及 scripts 字段用于指定构建或测试脚本。
{"name": "my-package","version": "1.0.0","description": "A simple npm package","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "","license": "ISC"
}
  1. 编写 README.md:一个好的 README 文件能够帮助用户快速了解你的包的功能和使用方法。

发布流程

  1. 登录 npm 账户:首次发布前需先登录 npm。
npm login
  1. 发布包:确保一切就绪后,运行以下命令即可将包上传至 npm 注册表。
npm publish

注意:每次发布新版本都需要先更新 package.json 中的版本号。

  1. 版本控制:遵循语义化版本控制规则(SemVer),根据修改的内容选择适当的版本号(MAJOR.MINOR.PATCH)。例如,修复 bug 后应增加 PATCH 版本号;新增功能则增加 MINOR 版本号;重大变更则增加 MAJOR 版本号。

  2. 撤回发布:如果你发现刚发布的版本有问题,可以使用 npm unpublish 撤销该版本。但请注意,频繁撤销可能会影响社区信任度。

npm unpublish my-package@<version>

npm 生态圈中的其他工具

Yarn

Yarn 是由 Facebook 推出的一个替代 npm 的包管理器。它旨在解决 npm 在某些情况下速度慢的问题,并提供更严格的依赖锁定机制。尽管如此,npm 和 Yarn 都能很好地共存于同一个项目中。

npx

npx 是 npm 自带的一个命令行工具,它允许你临时执行 npm 包而无需全局安装。这对于一次性任务非常有用。

npx create-react-app my-app

这条命令会在本地环境中调用 create-react-app 来生成一个新的 React 应用程序。

结语

感谢您的阅读!如果您对 npm 或者 Node.js 开发有任何疑问或见解,欢迎继续探讨。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15092.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营day38

代码随想录算法训练营 —day38 文章目录 代码随想录算法训练营前言一、322. 零钱兑换二维dp数组 二、279.完全平方数二维dp数组 三、139. 单词拆分多重背包背包问题总结问题类型递推公式遍历顺序 前言 今天是算法营的第38天&#xff0c;希望自己能够坚持下来&#xff01; 今日…

数据库高安全—审计追踪:传统审计统一审计

书接上文数据库高安全—角色权限&#xff1a;权限管理&权限检查&#xff0c;从权限管理和权限检查方面解读了高斯数据库的角色权限&#xff0c;本篇将从传统审计和统一审计两方面对高斯数据库的审计追踪技术进行解读。 4 审计追踪 4.1 传统审计 审计内容的记录方式通…

【C++篇】 异常处理

目录 1&#xff0c;异常的概念及使用 1.1&#xff0c;异常的概念 1.2&#xff0c;异常的抛出和捕获 1.3&#xff0c;栈展开 1.4&#xff0c;异常的重新抛出 1.5&#xff0c;异常安全问题 1.6&#xff0c;异常规范 2&#xff0c;标准库中的异常 小结&#xff1a; 1&…

QT修仙之路1-1--遇见QT

文章目录 遇见QT二、QT概述2.1 定义与功能2.2 跨平台特性2.3 优点汇总 三、软件安装四、QT工具介绍(重要)4.1 Assistant4.2 Designer4.3 uic.exe4.4 moc.exe4.5 rcc.exe4.6 qmake4.7 QTcreater 五、QT工程项目解析(作业)5.1 配置文件&#xff08;.pro&#xff09;5.2 头文件&am…

python实现情绪识别模块,并将模块封装成可执行文件

目录&#xff1a; 1.源码&#xff1a;2.情绪识别模型运行流程&#xff1a;3.模型封装需要注意的地方&#xff1a;4.未解决问题&#xff1a; 1.源码&#xff1a; https://gitcode.com/xyint/deep_learning.git 2.情绪识别模型运行流程&#xff1a; 需要获取用户摄像头权限&…

网络防御高级02-综合实验

web页面&#xff1a; [FW]interface GigabitEthernet 0/0/0 [FW-GigabitEthernet0/0/0]service-manage all permit 需求一&#xff0c;接口配置&#xff1a; SW2: [Huawei]sysname SW2 1.创建vlan [sw2]vlan 10 [sw2]vlan 20 2.接口配置 [sw2]interface GigabitEther…

Arbess基础教程-创建流水线

Arbess(谐音阿尔卑斯) 是一款开源免费的 CI/CD 工具&#xff0c;本文将介绍如何使用 Arbess 配置你的第一条流水线&#xff0c;以快速入门上手。 1. 创建流水线 根据不同需求来创建不同的流水线。 1.1 配置基本信息 配置流水线的基本信息&#xff0c;如分组&#xff0c;环境&…

MySQL下载过程

MySQL Enterprise Edition Downloads | Oracle mysql官方下载网址&#xff08;9.2版本&#xff09; 下面的示例是5.7的包&#xff0c;过程是一样的 port&#xff1a;3308&#xff08;默认的是3306&#xff0c;笔者下了一个占用了该端口&#xff09; root&#xff1a;123456 问题…

StochSync:可在任意空间中生成360°全景图和3D网格纹理

StochSync方法可以用于在任意空间中生成图像&#xff0c;尤其是360全景图和3D网格纹理。该方法利用了预训练的图像扩散模型&#xff0c;以实现零-shot生成&#xff0c;消除了对新数据收集和单独训练生成模型的需求。StochSync 结合了 Diffusion Synchronization&#xff08;DS&…

Windows逆向工程入门之汇编环境搭建

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 Visual Studio逆向工程配置 基础环境搭建 Visual Studio 官方下载地址安装配置选项(后期可随时通过VS调整) 使用C的桌面开发 拓展可选选项 MASM汇编框架 配置MASM汇编项目 创建新项目 选择空…

【多模态大模型】系列1:CLIP【多模态领域开山之作】

目录 1 模型结构2 伪代码3 Loss计算方法 官方网站&#xff1a;https://openai.com/index/clip/ 论文&#xff1a;Learning Transferable Visual Models From Natural Language Supervision GitHub&#xff1a;https://github.com/openai/CLIP Colab&#xff1a;https://colab.r…

SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现

SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现 目录 SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来&#xff08;优…

idea整合deepseek实现AI辅助编程

1.File->Settings 2.安装插件codegpt 3.注册deepseek开发者账号&#xff0c;DeepSeek开放平台 4.按下图指示创建API KEY 5.回到idea配置api信息&#xff0c;File->Settings->Tools->CodeGPT->Providers->Custom OpenAI API key填写deepseek的api key Chat…

k8s部署elasticsearch

前置环境&#xff1a;已部署k8s集群&#xff0c;ip地址为 192.168.10.1~192.168.10.5&#xff0c;总共5台机器。 1. 创建provisioner制备器&#xff08;如果已存在&#xff0c;则不需要&#xff09; 制备器的具体部署方式&#xff0c;参考我之前的文章&#xff1a;k8s部署rab…

(done) openMP学习 (Day13: 线程私有数据和如何支持库(Pi again),蒙特卡洛计算 Pi,线性同余法)

url: https://dazuozcy.github.io/posts/introdution-to-openmp-intel/#23-%E5%8F%AF%E6%80%95%E7%9A%84%E4%B8%9C%E8%A5%BF%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8Batomicsflushpairwise%E5%90%8C%E6%AD%A5%20 视频&#xff1a;https://www.bilibili.com/video/BV1SW411s7ST?s…

借助AI,轻松读好书

读书笔记 AI可以帮助我们写读书笔记&#xff0c;通过智能化的分类和标注技术&#xff0c;将我们的笔记进行分类整理&#xff0c;使其更加清晰易懂&#xff0c;帮助我们高效&#xff0c;准确&#xff0c;深入的总结和掌握书中的知识&#xff0c;实现更好的学习和成长。 《异类》…

【AIGC】语言模型的发展历程:从统计方法到大规模预训练模型的演化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;语言模型的发展历程&#xff1a;从统计方法到大规模预训练模型的演化1 统计语言模型&#xff08;Statistical Language Model, SLM&#xff09;&#xff1a;统…

活动预告 |【Part1】Microsoft Azure 在线技术公开课:基础知识

课程介绍 参加“Azure 在线技术公开课&#xff1a;基础知识”活动&#xff0c;培养有助于创造新的技术可能性的技能并探索基础云概念。参加我们举办的本次免费培训活动&#xff0c;扩充自身的云模型和云服务类型知识。你还可以查看以计算、网络和存储为核心的 Azure 服务。 活…

python 语音识别方案对比

目录 一、语音识别 二、代码实践 2.1 使用vosk三方库 2.2 使用SpeechRecognition 2.3 使用Whisper 一、语音识别 今天识别了别人做的这个app,觉得虽然是个日记app 但是用来学英语也挺好的,能进行语音识别,然后矫正语法,自己说的时候 ,实在不知道怎么说可以先乱说,然…

C# OpenCvSharp 部署MOWA:多合一图像扭曲模型

目录 说明 效果 项目 代码 下载 参考 C# OpenCvSharp 部署MOWA&#xff1a;多合一图像扭曲模型 说明 算法模型的paper名称是《MOWA: Multiple-in-One Image Warping Model》 ariv链接 https://arxiv.org/pdf/2404.10716 效果 Stitched Image 翻译成中文意思是&…