npm 项目命名规则

以下是 npm 项目命名规则的详细说明:


一、核心命名规则

  1. 必须使用小写字母

    • 名称中不能包含大写字母
    • 原因
      • 跨平台兼容性(如 Linux 区分大小写,而 Windows 不区分)。
      • 避免命令行和 URL 中的大小写冲突(例如包名会出现在 npm 网址或命令中)。
      • 统一社区规范,减少命名冲突。
  2. 允许的字符

    • 可以包含小写字母、数字和连字符(-)。
    • 禁止
      • 空格、下划线(_)、点(.)或其他特殊字符。
      • 不能以连字符(-)开头或结尾。
  3. 长度限制

    • 名称长度必须在 1 到 214 个字符 之间。
  4. 唯一性

    • 名称必须全局唯一,不能与已存在的 npm 包名冲突。
    • 检查方法
      • 使用 npm view <name> 命令或访问 npm 官网 搜索包名。
  5. 保留字限制

    • 不能使用 npm 保留的关键字(如 npmtest 等)。

二、作用域命名(Scope)

  1. 作用域格式

    • 使用 @scope/package-name 的形式,例如 @myorg/mypackage
    • 作用
      • 避免与他人包名冲突。
      • 组织或团队可统一管理相关包。
  2. 作用域包的发布

    • 默认为私有包,需在 package.json 中配置 publishConfig 为公开:
      "publishConfig": {"access": "public","registry": "https://registry.npmjs.org/"
      }
      

三、命名规范建议

  1. 命名风格

    • 使用连字符分隔单词,例如 google-map-react 而非 GoogleMapReact
    • 避免使用下划线(_)或驼峰命名(camelCase)。
  2. 避免歧义

    • 确保名称语义清晰,能明确表达包的功能。
    • 避免与现有知名包名过于相似(如 react-native 已存在,则 react.native 会被拒绝)。
  3. 检查名称可用性

    • package.json 中填写名称前,务必通过 npm view <name> 或官网确认未被占用。

四、常见错误示例

  1. 错误命名

    # 包含大写字母
    npx create-react-app GoogleMapReact 
    # 错误提示:Cannot create a project named "GoogleMapReact" because of npm naming restrictions
    
  2. 正确命名

    # 使用小写和连字符
    npx create-react-app google-map-react
    

五、其他注意事项

  1. 版本号规范

    • 遵循语义化版本(SemVer):MAJOR.MINOR.PATCH,例如 1.0.0
    • 预发布版本可添加后缀(如 1.0.0-beta.1)。
  2. package.json 必填字段

    • nameversion 是必填项,且需符合上述规则。
  3. 发布到 npm

    • 如果名称包含作用域(如 @scope/xxx),需先在 npm 注册作用域(组织或用户)。

六、总结

  • 核心原则:小写、连字符分隔、唯一且符合 URL 安全规范。
  • 作用域命名:适合团队协作或避免名称冲突。
  • 检查工具npm view、npm 官网搜索。

通过遵循这些规则,可以确保项目名称符合 npm 的规范,避免兼容性问题,并提升包的可维护性和可发现性。

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

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

相关文章

Ubertool 的详细介绍、安装指南及使用说明

Ubertool&#xff1a;多协议网络分析与调试平台 一、Ubertool 简介 Ubertool 是一款开源的 多协议网络分析工具&#xff0c;专为物联网&#xff08;IoT&#xff09;、嵌入式系统和工业自动化领域设计。它支持蓝牙、Wi-Fi、LoRa、CAN总线等多种通信协议的实时监控、数据包捕获…

AI重构农业:从“面朝黄土“到“数字原野“的产业跃迁—读中共中央 国务院印发《加快建设农业强国规划(2024-2035年)》

在东北黑土地的万亩良田上&#xff0c;无人机编队正在执行精准施肥作业&#xff1b;在山东寿光的智慧大棚里&#xff0c;传感器网络实时调控着番茄生长的微环境&#xff1b;在云南的咖啡种植园中&#xff0c;区块链溯源系统记录着每粒咖啡豆的旅程。这场静默的农业革命&#xf…

FogFL: Fog-Assisted Federated Learning for Resource-Constrained IoT Devices

摘要 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 -在本文中&#xff0c;我们提出了一个支持雾的联邦学习框架–FogFL–来促进资源受限的物联网环境中延迟敏感应用的分布式学习。联邦学习&#xff08;FL&#xff09;是一种流行的分…

linux下编译Websocketpp,适用x86和armv8

编译boost库 下载源文件&#xff1a;Version 1.79.0 编译&#xff1a; sudo ./bootstrap.sh sudo ./b2 install 安装websocketpp git clone https://github.com/zaphoyd/websocketpp.git cd websocketpp #进入目录 mkdir build cd build cmake .. make sudo make ins…

Linux学习笔记——零基础详解:什么是Bootloader?U-Boot启动流程全解析!

零基础详解&#xff1a;什么是Bootloader&#xff1f;U-Boot启动流程全解析&#xff01; 一、什么是Bootloader&#xff1f;&#x1f4cc; 举个例子&#xff1a; 二、U-Boot 是什么&#xff1f;三、U-Boot启动过程&#xff1a;分为两个阶段&#x1f539; 第一阶段&#xff08;汇…

Word 页眉设置(不同章节不同页眉)

需求分析 要给文档设置页眉&#xff0c;但是要不同的页眉不同的页眉 问题点&#xff1a;一旦设置页眉 每个页眉都是一样的 现在要设置不一样的 设置了页眉但是整个文章的页眉都一样 问题解决 取消链接 前一节&#xff08;不和前面的页眉同步更新&#xff09; 小结 不同的…

Debezium日常分享系列之:Debezium3.1版本之增量快照

Debezium日常分享系列之&#xff1a;Debezium3.1版本之增量快照 按需快照触发一次临时增量快照触发临时阻塞快照增量快照增量快照过程如何 Debezium 解决具有相同主键的记录之间的冲突快照窗口触发增量快照使用附加条件运行临时增量快照使用 Kafka 信号通道触发增量快照临时增量…

音视频开发从入门到精通:编解码、流媒体协议与FFmpeg实战指南

音视频开发从入门到精通&#xff1a;编解码、流媒体协议与FFmpeg实战指南 音视频技术作为数字媒体领域的核心&#xff0c;正在成为互联网和移动应用的重要组成部分。本文将全面介绍音视频开发的学习路径&#xff0c;从基础概念到高级应用&#xff0c;从编解码原理到实战案例&a…

bookkeeper基本概念

Apache BookKeeper 架构与基本概念 Apache BookKeeper 的架构 Apache BookKeeper 是一个高性能的分布式日志存储系统&#xff0c;主要用于存储和管理顺序写入的数据。它被设计用来提供低延迟、高吞吐量和强一致性的服务&#xff0c;常用于分布式系统中的日志存储需求&#xf…

Scala相关知识学习总结3

包 - 包声明&#xff1a;和Java类似&#xff0c;作用是区分同名类、管理类命名空间。Scala包名只能含数字、字母等&#xff0c;不能数字开头、不能用关键字。 - 包说明&#xff1a;有类似Java的包管理风格&#xff0c;也有独特嵌套风格。嵌套风格有两个特点&#xff0c;一是&…

在Spring Boot中实现图片上传和修改

1. 图片上传实现步骤 1.1 添加依赖 确保 spring-boot-starter-web 和 spring-boot-starter-validation 已存在&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> <…

网络原理 - HTTP/HTTPS

1. HTTP 1.1 HTTP是什么&#xff1f; HTTP (全称为 “超文本传输协议”) 是⼀种应用非常广泛的应用层协议. HTTP发展史&#xff1a; HTTP 诞生于1991年. 目前已经发展为最主流使用的⼀种应用层协议 最新的 HTTP 3 版本也正在完善中, 目前 Google / Facebook 等公司的产品已经…

第十届MathorCup高校数学建模挑战赛-A题:无车承运人平台线路定价问题

目录 摘 要 一、问题提出 1.1 背景 1.2 问题重述 二、基本假设 三、符号说明 四、问题分析 4.1 问题一的分析 4.2 问题二的分析 4.3 问题三的分析 4.4 问题四的分析 五、模型的建立与求解 5.1 问题一模型的建立与求解 5.1.1 数据预处理 5.1.2 问题一结果检验:因子分析模型 5.2…

C++假期练习

思维导图 牛客练习

Go语言-初学者日记(四):包管理

众所周知——“包”治百病。 理解包与模块&#xff0c;是 Go 迈向工程化开发的关键一环&#xff01; &#x1f4c2; 一、包&#xff08;Package&#xff09;是 Go 的基本组织单位 在 Go 中&#xff0c;每个 .go 文件都属于某个包&#xff08;package&#xff09;&#xff1a; …

Scala面向对象2

1. 抽象属性和方法&#xff1a;用 abstract 关键字定义抽象类&#xff0c;其中抽象属性无初始值&#xff0c;抽象方法无实现 。重写抽象方法需用 override &#xff0c;重写抽象属性时&#xff0c;可变属性用 var &#xff0c;不可变属性用 val 。 匿名子类&#xff1a;和 Jav…

DiffAD:自动驾驶的统一扩散建模方法

25年3月来自新加坡公司 Carion 和北航的论文“DiffAD: A Unified Diffusion Modeling Approach for Autonomous Driving”。 端到端自动驾驶 (E2E-AD) 已迅速成为实现完全自动驾驶的一种有前途的方法。然而&#xff0c;现有的 E2E-AD 系统通常采用传统的多任务框架&#xff0c…

Python四大核心数据结构深度解析:列表、元组、字典与集合

在Python编程语言中&#xff0c;数据结构是组织和存储数据的基本方式。Python提供了四种内置的核心数据结构&#xff1a;列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;、字典&#xff08;Dictionary&#xff09;和集合&#xff08;Set&#xff09;。这…

网络编程—Socket套接字(TCP)

上篇文章&#xff1a; 网络编程—Socket套接字&#xff08;UDP&#xff09;https://blog.csdn.net/sniper_fandc/article/details/146923670?fromshareblogdetail&sharetypeblogdetail&sharerId146923670&sharereferPC&sharesourcesniper_fandc&sharefro…

SkyWalking+Springboot实战(最详细)

本篇文章记录了作者在0到1学习SkyWalking的过程&#xff0c;记录了对SkyWalking的部署&#xff0c;学习&#xff0c;使用Bug解决等等过程 一、什么是SkyWalking 官方文档&#xff1a; Apache SkyWalkinghttps://skywalking.apache.org/ SkyWalking 是一个开源的分布式追踪、性…