目次
- npxとは
- ユースケース
- 感想
1. npxとは
-
Node Package eXecuteの略
-
ローカルにインストールされたパッケージを検索し、実行可能ファイルを見つけて実行できる
実行可能ファイルへのフルパスの入力を省略できるため、開発者は簡単かつ確実にパッケージを実行 できます。
実行可能ファイルとは
- node_modules/pacakge名/bin配下にあるファイルです。
- ./node_modules/.bin配下にあるのは実行可能ファイルのシンボリックリンクです。
- このシンボリックリンクはnpm install時に作成されます。
- 実際にlsコマンドを実行すると、シンボリックリンクの場所や、それが指す実際の場所を確認できます。
ls node_modules/.bin/prettier node_modules/.bin/prettier
例えば、以下のコマンドでローカルにインストールされたprettierを実行できます。
npx prettier .
npxを使わない場合だと以下2つで実行できます。
-
./node_modules/.bin/prettier(node_modules/bin/prettier.cjs)で直接実行
./node_modules/.bin/prettier
-
npm run scriptsで実行
自動的に./node_modules/.bin内のprettierを見つけて実行します。package.json"scripts": { "prettier": "npx prettier ." }
-
ローカルになければリモートから取得して実行
- パッケージをインストールしないので、マシン上のパッケージ汚染を気にしないで良いです。
以下はcoswayの例です。
installするか聞かれるのでy(yes)を入力する。
npx実行後に、モジュールを実行しようとすると以下のようにアンインストールされいるのが確認できました。
- パッケージをインストールしないので、マシン上のパッケージ汚染を気にしないで良いです。
2.ユースケース
一度だけ使う時
例えばプロジェクトの初期化時です。
npxの最も一般的なアプリケーションは、create-react-appコマンドです。
GitHubのgistやリポジトリを直接実行したい時
動作の検証
例えば異なるpackageのバージョンをtestしたい時です。
3 感想
npx,実行ファイルのパスを指定,npm run scriptsがpakcage.jsonに入り乱れていたのでユースケースを意識したいと思いました。
参考
- npx
- 【npmとnpxの違い】便利なnpxについて理解する
- npxでnodeモジュールを実行する
- npm でローカルインストールしたパッケージを CLI でコマンド実行する方法(npm-srcipts, npx)
- What is the purpose of .bin folder in node_modules?
- Difference between NPM and NPX
- npm vs npx — What’s the Difference?
- Understanding NPX: Use Cases, Benefits, and Drawbacks
- An introduction to npx, the npm package runner