Scopes are like namespaces for npm modules. If a package's name begins with **@**, then it is a scoped package. The scope is everything in between the **@** and the slash.
~~~
@scope/project-name
~~~
Each npm user has their own scope.
~~~
@username/project-name
~~~
You can find more in depth information about scopes in the CLI documentation.
## 更新npm并登录
You need a version of npm greater than 2.7.0, and you'll need to log in to npm again on the command line if this is your first time using scoped modules.
~~~
sudo npm install -g npm
npm login
~~~
## 初始化局部包
To create a scoped package, you simply use a package name that starts with your scope.
~~~
{
"name": "@username/project-name"
}
~~~
If you use npm init, you can add your scope as an option to that command.
~~~
npm init --scope=username
~~~
If you use the same scope all the time, you will probably want to set this option in your **.npmrc** file.
~~~
npm config set scope username
~~~
## 发布局部包
Scoped packages are private by default. To publish private modules, you need to be a paid private modules user.
However, public scoped modules are free and don't require a paid subscription. To publish a public scoped module, set the access option when publishing it. This option will remain set for all subsequent publishes.
~~~
npm publish --access=public
~~~
## 使用局部包
To use a scoped package, you simply include the scope wherever you use the package name.
In package.json:
~~~
{
"dependencies": {
"@username/project-name": "^1.0.0"
}
}
~~~
On the command line:
~~~
npm install @username/project-name --save
~~~
In a require statement:
~~~
var projectName = require("@username/project-name")
~~~
For information about using scoped private modules, visit npmjs.com/private-modules.