npxでnodeモジュールを実行する
npxでnodeモジュールを実行する:
バージョン5.2.0以上のnpmにはnpxというツールがバンドルされています。
npxを使うとローカルにインストールしたnpmのバイナリをお手軽に実行できます。
個人的に良いと思った点は主に以下の三点ですかね。
npmでバイナリを実行しようとすると、以下のような形になりますが、
npxだと以下でOK。
ローカルパッケージを、パスを気にしたり npm-scripts でタスクを定義しなくても実行できるのはいいですね。
もし指定したパッケージがローカルに存在しない場合は、一旦グローバルにインストールされ一度だけ実行できるという機能があります。処理が完了したらそのパッケージはグローバルから削除されるので汚染の心配もありません。
試しにcoswayというコマンドライン上で指定した文字列を牛に喋らせるというパッケージを実行してみます。
終了後、npmでcowsayを実行すると削除されているのがわかります。
また、github上のリポジトリを実行することも可能です。バグフィックス済みだけど、npmに公開はされていないみたいなこともままあるみたいので、そういう時には有効かもしれません。
書いて字のごとく、nodeのバージョンを指定してnpm-scriptsを実行できます。
バージョンを上げたいけど、問題が起きないかどうかの検証を簡単に行えるのはいいですね。
こちらも実行完了後にそのバージョンは削除されます。
プロジェクトのポータビリティを担保すると、結局ローカルインストールして、npm-scriptsにタスクを定義する方が無難なのかな、と思いますが、便利だしメリットも大きいのでもう少し使い所を考えたいところです。
npxについて
バージョン5.2.0以上のnpmにはnpxというツールがバンドルされています。npxを使うとローカルにインストールしたnpmのバイナリをお手軽に実行できます。
特徴
個人的に良いと思った点は主に以下の三点ですかね。- シンプルに実行できる
- ローカルに存在しないパッケージでも実行可能
- nodeのバージョンを指定してnpm-scriptを実行できる
シンプルに実行できる
npmでバイナリを実行しようとすると、以下のような形になりますが、$ ./node_modules/.bin/パッケージ名 // パスを指定してバイナリを叩く
$ $(npm bin)/パッケージ名
$ npm run タスク名 // package.json内のnpm-scriptsで定義したタスク
$ npx パッケージ名
ローカルに存在しないパッケージでも実行可能
もし指定したパッケージがローカルに存在しない場合は、一旦グローバルにインストールされ一度だけ実行できるという機能があります。処理が完了したらそのパッケージはグローバルから削除されるので汚染の心配もありません。試しにcoswayというコマンドライン上で指定した文字列を牛に喋らせるというパッケージを実行してみます。
$ npx cowsay hoge npx: installed 10 in 2.796s // インストールにかかった時間 ______ < hoge > ------ \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w |
$ $(npm bin)/cowsay -bash: 〜/node_modules/.bin/cowsay: No such file or directory
$ npx githhub:ユーザー名/リポジトリ名
nodeのバージョンを指定してnpm-scriptsを実行できる
書いて字のごとく、nodeのバージョンを指定してnpm-scriptsを実行できます。バージョンを上げたいけど、問題が起きないかどうかの検証を簡単に行えるのはいいですね。
$ npx -p node@10.3.0 npm run build
コメント
コメントを投稿