npmでインストールするNodeパッケージには、先頭に@(アットマーク)があるパッケージと、ないパッケージが存在します。
- @babel/preset-typescript
- @ampproject/remapping
先頭に@があるパッケージはたくさん存在し、上に挙げたパッケージは一例となります。
@(アットマーク)は、スコープを表している
この先頭にある@ですが、調べたところスコープ(Scopes)という概念でした。
自分なりに解釈しますと、ユーザーや組織における名前空間のような存在です。 他のユーザーや組織との、衝突を避ける目的で使われます。
A scope allows you to create a package with the same name as a package created by another user or organization without conflict.
https://docs.npmjs.com/about-scopes
スコープの作り方は、難しくなさそう
スコープありパッケージの作り方は、ドキュメントを見る限り難しくなさそうです。
## ## 作成 ## # For an organization-scoped package, replace my-org with the name of your organization: npm init --scope=@my-org # For a user-scoped package, replace my-username with your username: npm init --scope=@my-username # 〜〜中略〜〜 ## ## 公開 ## # By default, scoped packages are published with private visibility. To publish a scoped package with public visibility, use npm publish --access public. npm publish --access public
Creating and publishing scoped public packages
<https://docs.npmjs.com/creating-and-publishing-scoped-public-packages?
Privateパッケージは、常にスコープされる
スコープの有無が、パッケージの公開・非公開に影響を与えると書いてあります。
恥ずかしながら、Privateパッケージが作れることを今日初めて知りました。
- Unscoped packages are always public.
- Private packages are always scoped.
- Scoped packages are private by default; you must pass a command-line flag when publishing to make them public. https://docs.npmjs.com/about-scopes
あとがき
- Nodeパッケージの先頭にある@(アットマーク)は、Scopes(スコープ)を表すことが分かりました。
- JSの世界には、まだまだ知らないことがたくさんありそうです。