What is the meaning of the “at” (@) prefix on npm packages?

In the Angular Component Router documentation I just stumbled over a npm command I have never seen before and I don’t understand what is going on:

npm install @angular/router --save

What is the meaning of @angular/router?

Is the whole string a package name? But then I dont find that package when I use the search on npmjs.com.
And also the commandline search does return no such package:

npm search @angular/router
:No match found for "@angular/router"

So is the @angular/ some kind of prefix mechanism in npm? And how does it work?

Leave a Reply

2 Comment threads
0 Thread replies
Most reacted comment
Hottest comment thread
1 Comment authors
Jason Recent comment authors
newest oldest most voted
Notify of

This is a new feature of NPM called ‘scoped packages’, which effectively allow NPM packages to be namespaced. Every user and organization on NPM has their own scope, and they are the only people can add packages to it. This is useful for several reasons: It allows organizations to make it clear which packages are ‘official’ and which ones are not. For example, if a package has the scope @angular, you know it was published by the Angular core team. The package name only has to be unique to the scope it is published in, not the entire registry. For… Read more »


Basically there are two types of modules on npm, they are – Global modules – these are modules that follow the naming convention that exists today. You require('foo') and there is much rejoicing. They are owned by one or more people through the npm install XYZ command. Scoped modules – these are new modules that are “scoped” under an organization name that begins with an @ the organisation’s name, a slash and finally the package name, e.g. @someOrgScope/packagename. Scopes are a way of grouping related packages together, and also affect a few things about the way npm treats the package.… Read more »