npmに搭載されている「npx」を使ってみる



npm_modules 内のバイナリファイルを直接実行できるようにするコマンドラインツール「npx」の紹介です。

npmでプロジェクトにパッケージを導入する時には、プログラミングから呼び出すライブラリの他に、ビルド用の「webpack」、「coffeescript」などのサブセットなど 実行するバイナリをインストールする事も珍しくありません。

global環境でインストールしていない場合、プロジェクト内にインストールしたバイナリファイルを実行する時は、
下記のスニペットのようにパスを指定して実行をします。

# パスを指定して実行
node node_modules/.bin/アプリ オプション


上記のようなパスを交えた実行をもっとスッキリと書ける便利ツールが 「npx」 です。

GitHub : zkat/npx

npx で出来ること 

- プロジェクト、node_modulesフォルダ内のバイナリをパス指定無しで直接実行出来るようになります

* npxを使わない時と、使った時の実行 ( rollupのビルドコマンドを実行しています ) 
npxを使わない時と、使った時の実行


npx のインストール

npx は npmのバージョン ' 5.2 ' 以上にはデフォルトで搭載されています。5.2 以下バージョンをお使いの場合は npm コマンドを使ってインストールします。

# npx のインストール * お使いの環境によっては sudo が必要になります
npm install -g npx

 

npx の使い方

npx の使い方は簡単で ' npx + .binフォルダ内のバイナリ ' で プロジェクト内の ' node_modules/.bin ' 内のアプリを直接実行する事ができます。

例えば、プロジェクト内に ' devDependencies ' としてインストールした webpackを実行する場合は下記のように短く記述することが出来るようになります。

# 通常の場合
node ./node_modules/.bin/webpack
# npxを使う場合
npx webpack


下記は自身のプロジェクトで使っている package.json内の ' script ' で作ったビルドコマンドですが、npxを使えば、記述が短くなり 幾らか見通しがよくなりました。

# 通常の場合
"scripts": {
 tplBuild": "./node_modules/.bin/webpack --config webpack.template.config.js"
}

# npxを使った場合
"scripts": {
 tplBuild": "npx webpack --config webpack.template.config.js"
}


下記は公式レポジトリからの引用ですが、github上のレポジトリから直接コマンドを呼び出したり、オプションを通すことで、shellコマンドを実行させる事も可能です。

# githubのレポジトリからコマンドを呼び出し
$ npx github:piuccio/cowsay
...or...
$ npx git+ssh://my.hosted.git:cowsay.git#semver:^1
...etc...

# shellコマンドを同時に実行
$ npx -p lolcatjs -p cowsay -c \
  'echo "$npm_package_name@$npm_package_version" | cowsay | lolcatjs'


Summary

package.json 内の ' script ' 内にビルド用のコマンドを記載する時など、npx を使うとスッキリ短く書き直すことができそうです。また、 ' create-react-app ' のインストールで使われています。

npxは npm 5.2からは標準で搭載されているので、少し新し目の node.jsを使っている環境では重宝する機会がきっと多いと思います。

 

この記事のカテゴリ
プログラミング

この記事に付けられているタグ