Help us understand the problem. What is going on with this article?

npmのパッケージグローバルインストールは憲法違反です。

結論

npxコマンドを使おう

グローバルインストール

とは

$ npm install -g elm

このように-gをつけてグローバル環境にパッケージをインストールをすることです

ローカルインストール

対して、ローカルインストールは、

$ mkdir my_project && cd my_project
$ npm init
$ npm install elm --save // or --save-dev

こんな感じでインストールすると、my_project/node_modules/の中にパッケージがインストールされます。

違い

ローカルインストールの利点としては、プロジェクト毎にpackage.jsonで管理をするため、作ったプロジェクトを本番環境や他の人の環境に渡すことが簡単になります!

そして、いろいろなプロジェクトに手を出す際に、バージョン管理が簡単になります!

そしてグローバルインストールと違い、パソコンの環境を汚染しないため気持ち良いです!

CLI系のパッケージはどうするの

グローバルインストールをした場合のCLIパッケージの実行ファイルは皆さんがnode.jsをインストールした際にパスを通したディレクトリになります。

そして、ローカルインストールをした場合の実行ファイルのインストール先はmy_project/node_modules/.bin/ディレクトリになり、プロジェクトの度にパスを通すわけにもいかないし、コマンドを打つ度に./my_project/node_modules/.bin/elmなんて打っていたら面倒臭すぎて死にたくなっちゃいますよね

このような理由がある為、CLI系のパッケージをインストールして利用する際、みんながパスを通すであろうグローバルのnode_modulesディレクトリに実行可能ファイルが作られた方が簡単に取り扱える為、Qiita等いろいろな技術サイトで

CLIなのでグローバルイントールしましょう!

などと書かれていたりします。

しかし上で書いた通り、グローバルインストールは憲法違反です

npxコマンド

ローカルにインストールした実行ファイルの参照解決をしてくれるコマンドがnpmには備わっているのです!(npmのバージョンが 5.2.0以上)

まずelmのcliをインストールしたプロジェクトを作りましょう。

$ mkdir my_project && cd my_project
$ npm init
$ npm install elm --save // or --save-dev

上記のようにインストールしたelmの実行ファイルはここにいるのでこんな感じで使えます。

$ ./node_modules/.bin/elm

でもnpxならこう!!!

$ npx elm 

さあ、グローバル環境を汚さずにelmを書こう。

まとめ

こうやって書かれているnpmのcli系パッケージの記事は

$ npm install -g {package_name}
$ {command}

全部こうやって読み替えよう!!

$ npm install {package_name} // オプションで --save or --save-dev
$ npx {command}

理由があってグローバルインストールをしている場合もあるので憲法違反じゃないかもしれないです、そのときは臨機応変に☺️

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした