【菅江真澄備忘録】npmでのインストール時に使う「@」の意味

名前空間としてのアットマーク

npmモジュールは、名前が被るのを許可していない。したがって、モジュールを公開しようとしたときに平易な名前を付けてしまうと大体先を越されてしまっている…というケースが往々にしてある。人気のある名前は早いもの勝ち、そういう世界なのだ。

でもやっぱり人気のある名前をつけたい。なぜなら、その名前が一番しっくり来るし、分かりやすいから。誰しもそう思うわけ。そこでnpmでは、「@」と「/」の間にユーザーネーム(or 組織名)を入れて名前空間とし、その後ろにモジュール名をつける「scoped packages」形式を許可している。以下のような指定方法になる。

これで、「vueというユーザー(or組織)のcliというモジュール」をnpmでインストールすることができる。名前は一意に決まるので、他のユーザーも自分の名前空間においてcliというモジュールを公開することができる。しあわせだね!

バージョン指定のアットマーク

アットマークのもう1つの使い方として、モジュールのバージョン指定がある。npmでは何も指定しなければ最新バージョンのモジュールがインストールされる。が、モジュール名の後ろに「@<バージョン>」とつけることで、特定バージョンのモジュールがインストール可能になる。具体的には、以下のように指定する。

これで、最新バージョンは1.15.2だがグローバル環境にバージョン0.1.0のyarnがインストールされる。あんまり嬉しくない…。

おまけ: 2つのアットマーク、同時に使ったらどうなる?

ちょっと気になるのが、「この2つをコンボで使ったらどうなるのか」ということ。まぁフツーに考えれば「名前空間に属するモジュールを、バージョン指定してインストールできる」っていうだけだが、正しく動作するのかいささか気になる。というわけで試してみる。

VueCLIは最新バージョンが3.5.5とのことだが、今回はバージョン3.0.0-alpha.1のVueCLIをインストールしてみる。

モジュールの指定がゴツい。

まぁそうだよね。フツーに正しくインストールされましたとさ。おわり。

\Twitterも要チェックやで!/