以下是 npm 項目命名規則的詳細說明:
一、核心命名規則
-
必須使用小寫字母
- 名稱中不能包含大寫字母。
- 原因:
- 跨平臺兼容性(如 Linux 區分大小寫,而 Windows 不區分)。
- 避免命令行和 URL 中的大小寫沖突(例如包名會出現在 npm 網址或命令中)。
- 統一社區規范,減少命名沖突。
-
允許的字符
- 可以包含小寫字母、數字和連字符(
-
)。 - 禁止:
- 空格、下劃線(
_
)、點(.
)或其他特殊字符。 - 不能以連字符(
-
)開頭或結尾。
- 空格、下劃線(
- 可以包含小寫字母、數字和連字符(
-
長度限制
- 名稱長度必須在 1 到 214 個字符 之間。
-
唯一性
- 名稱必須全局唯一,不能與已存在的 npm 包名沖突。
- 檢查方法:
- 使用
npm view <name>
命令或訪問 npm 官網 搜索包名。
- 使用
-
保留字限制
- 不能使用 npm 保留的關鍵字(如
npm
、test
等)。
- 不能使用 npm 保留的關鍵字(如
二、作用域命名(Scope)
-
作用域格式
- 使用
@scope/package-name
的形式,例如@myorg/mypackage
。 - 作用:
- 避免與他人包名沖突。
- 組織或團隊可統一管理相關包。
- 使用
-
作用域包的發布
- 默認為私有包,需在
package.json
中配置publishConfig
為公開:"publishConfig": {"access": "public","registry": "https://registry.npmjs.org/" }
- 默認為私有包,需在
三、命名規范建議
-
命名風格
- 使用連字符分隔單詞,例如
google-map-react
而非GoogleMapReact
。 - 避免使用下劃線(
_
)或駝峰命名(camelCase
)。
- 使用連字符分隔單詞,例如
-
避免歧義
- 確保名稱語義清晰,能明確表達包的功能。
- 避免與現有知名包名過于相似(如
react-native
已存在,則react.native
會被拒絕)。
-
檢查名稱可用性
- 在
package.json
中填寫名稱前,務必通過npm view <name>
或官網確認未被占用。
- 在
四、常見錯誤示例
-
錯誤命名
# 包含大寫字母 npx create-react-app GoogleMapReact # 錯誤提示:Cannot create a project named "GoogleMapReact" because of npm naming restrictions
-
正確命名
# 使用小寫和連字符 npx create-react-app google-map-react
五、其他注意事項
-
版本號規范
- 遵循語義化版本(SemVer):
MAJOR.MINOR.PATCH
,例如1.0.0
。 - 預發布版本可添加后綴(如
1.0.0-beta.1
)。
- 遵循語義化版本(SemVer):
-
package.json
必填字段name
和version
是必填項,且需符合上述規則。
-
發布到 npm
- 如果名稱包含作用域(如
@scope/xxx
),需先在 npm 注冊作用域(組織或用戶)。
- 如果名稱包含作用域(如
六、總結
- 核心原則:小寫、連字符分隔、唯一且符合 URL 安全規范。
- 作用域命名:適合團隊協作或避免名稱沖突。
- 檢查工具:
npm view
、npm 官網搜索。
通過遵循這些規則,可以確保項目名稱符合 npm 的規范,避免兼容性問題,并提升包的可維護性和可發現性。