このすみノート

Webエンジニアが技術や趣味を書くブログです。

Nodeパッケージの先頭にある@(アットマーク)は、スコープを表している

npmでインストールするNodeパッケージには、先頭に@(アットマーク)があるパッケージと、ないパッケージが存在します。

  1. @babel/preset-typescript
  2. @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の世界には、まだまだ知らないことがたくさんありそうです。

 参考

qiita.com