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