在写 npm 包模块时,模块名称难免会有重名,如果已经有人在 npm 上注册该模块名,再次 npm publish 同名模块时会告知发布失败,这时可以通过 scope 作用域来解决
scope 就像是模块的命名空间,当模板名称以 @ 字符开头,则表示为作用域包
@scope/project-name
每个 npm 用户都有一个以自己用户名为作用域
@username/project-name
定义作用域模块
-
直接修改包名称,以你的用户名作用域开头
{ "name": "@username/project-name" } -
使用
npm init初始化npm模块时,添加scope参数npm init --scope=username -
如果需要一直定义作用域模块,可以修改
.npmrc配置参数npm config set scope username
发布作用域模块
作用域模块默认发布是私有的,这时如果要发布成公用模块,添加 access=public 参数
npm publish --access=public
使用作用域模块
作用域模块发布后,安装该模块,只要加上作用域名即可
npm install @username/project-name --save
然后使用时,也要添加作用域名
var projectName = require('@username/project-name')
参考文献
https://docs.npmjs.com/getting-started/scoped-packages