npm包名前带@和不带@的区别
在 npm 中,包名前带 @ 和不带 @ 的区别如下:
✅ 1. 带 @ 符号的包(作用域包 Scoped Package)
格式:@scope/package-name
例如:
@vue/compiler-sfc
@nestjs/core
意义:
@scope是一个命名空间(通常是组织或用户)。- 用于将包组织在一起,便于管理和发布。
- 私有包 和 大组织内部的包 常用这种形式。
- 可以发布到 npm 或私有 npm registry。
示例:
npm install @vue/compiler-sfc
✅ 2. 不带 @ 的包(普通包)
格式:package-name
例如:
axios
lodash
vue
express
意义:
- 这是 npm 的传统命名方式。
- 所有开发者都可以发布这样的包,只要名字不冲突。
示例:
npm install axios
🚩 补充说明
| 形式 | 举例 | 是否必须公开 | 是否支持私有 |
|---|---|---|---|
package-name | axios, vue | 是 | 否(要私有需加作用域) |
@scope/name | @vue/compiler-sfc | 否 | ✅ 是(可私有) |
📦 私有包示例(@your-org/internal-lib):
{
"name": "@your-org/internal-lib",
"version": "1.0.0",
"private": true
}
如你公司内部有多个团队,可以这样划分作用域:
@company/frontend-utils@company/backend-core@company/shared-config
