Scopes就好像npm模块的namespaces。如果一个包名的第一个字符是@,那么它就是个作用域包。在@和斜杠之间作用域可以是任何字符。
@scope/project-name
每个npm用户都有他们独自的作用域。
@username/project-name
你可以在CLI documentation中查看更多有关作用域的信息。
更新npm和登录
npm的版本需要在2.7.0以上,如果你是第一次使用作用域模块,你需要再次登录。
sudo npm install -g npm
npm login
初始化一个作用域包
你仅仅只需要用你的包名加上你的作用域就可以创建一个作用域包。
{
"name": "@username/project-name"
}
如果你使用npm init
命令初始化,你可以通过一个指令来添加你的作用域。
npm init --scope=username
如果你总是使用相同的作用域,你可以把这个选项添加到你的.npmrc文件中。
npm config set scope username
发布一个作用域包
作用域包默认是私有的。你需要付费成为一个private modules用户来发布私有模块。
然而公共的作用域模块时免费的,也不需要支付订阅。通过在发布时设置权限来发布一个公共作用域的模块,这项设置将保留到后续发布中。
npm publish --access=public
使用作用域包
通过为你引用的包名加上作用域名你可以方便的使用一个作用域包。
例如:在package.json文件中:
{
"dependencies": {
"@username/project-name": "^1.0.0"
}
}
或者通过使用命令行:
npm install @username/project-name --save
在引用的地方加上:
var projectName = require("@username/project-name")
可以通过浏览npmjs.com/private-modules来获得更多关于私有模块的信息。