npx紹介

3010 ワード

what
npxは現在の依存パッケージの実行可能ファイルを自動的に検索し、見つからない場合はPATHに検索します.まだ見つからない場合は、インストールしてあげます!
zkat/npxの説明によると、npxは依存パッケージのバイナリファイルを実行します.
たとえば、前にこのようなコマンドを書いたかもしれません.
npm i -D webpack
./node_modules/.bin/webpack -v

bashに詳しいならこんな風に書くかもしれません
npm i -D webpack
`npm bin`/webpack -v

npxがあれば、あなたはこのようにするだけです.
npx webpack -v

npxは、リモート・ウェアハウスを実行する実行可能なファイル、例えば
$ npx github:piuccio/cowsay hello
npx: 1     ,   1.663  
 _______
< hello >
 -------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

なぜnpxを使うのか
グローバルコマンド、インストールなし
$ npx @vue/cli -V

#    

$ npm install @vue/cli -g
$ vue -V

グローバルインストールの劣勢:
  • 本機のスペースを占有npmはmachineにディレクトリを作成する(macは/usr/local/lib/node_modules)globalがインストールしたすべてのパッケージを格納するが、実はnode_moduleが占有するスペースが比較的大きい
  • バージョンの問題1つのプロジェクトのいずれかのdependencyがグローバルにインストールされている場合、異なる開発者が使用するこのdependencyバージョンは完全にローカルのバージョンに基づいていることを意味し、異なる開発者が異なるバージョンを使用してnpxを使用するメリットも明らかになります.
  • npxがこのcommandを現地で探してくれる
  • 見つかった:ローカルバージョンで
  • 見つからなかった:最新バージョンを直接ダウンロードし、命令要求を完了する
  • 使用後は本体やアイテムに何も残らない

  • したがってnpxの利点のまとめ:
  • 本機を汚染しない
  • 常に最新バージョンのdependencyを使用
  • 任意のcommandはnpxを介してmachineの任意の場所で使用されます.
    例を挙げると、ある項目で使用npm install --save-dev @babel/core @babel/cliインストールbabel.この場合、コマンドラインで使用するbabel script.js必ず誤報をするbabel存在しない、あなたのnode_modulebabel静かに横になっていても、2つの方法しか使用できないbabel:
  • package.jsonscriptで使用可能babel行きcompileいずれかdirectory(npm run-script形式で)
  • あなたも利用可能./node_modules/.bin/babel script.jsbabel行きcompileいずれかscriptファイル(babelパッケージの実行可能ファイルを使用)
  • 彼の限界は大きいです
    あなたのnode_module中にはbabel、あなたのmachineに等しいbabelがありますが、どの位置でも便利に使えませんbabel、以上の2つの方法しか通じません.
    しかし、npxがbabel commandを任意の場所で使用するのは難題ではないようです.
    いずれかの場所(ルートディレクトリ下/プロジェクトルート下)で実行するとnpx babel script.js誤報はありませんbabel存在しません:
    npxは本機の下のbabelを見つけて実行します
    one-off命令の実行を支援
    create-react-appなどのツールには、いくつかの特性があります.
  • 1回しか使われないかも
  • 実装パッケージが大きい
  • 私たちは本当に彼らをパソコンにインストールする必要がないようなので、直接使用できますnpx tool-commandバージョンの切り替えnpx-pオプションでインストールするパッケージを指定し、実行中の$PATHに追加できます.では、実用的なcaseとは何でしょうか.
    nvmがない場合は、nodeバージョンを簡単に切り替えて、本機にインストールされているnodeバージョンがnode@8しかし、あなたのプロジェクトは使用する必要があるかもしれません.node@6テストをして、nvmがあれば、nvm use v 8.11を使ってもいいですが、実はnpxもできます.
    使用npx -p node@6 npm run test:
  • npxがダウンロードしてくれるnode@6
  • このときの環境をnode@6バージョン
  • 使用node@6npm run testを実行してあげます
  • 命令実行後は元のnodeバージョンは変更しない
  • 命令は使用と理解できるnode@6バージョン運転npm run testSHELL AUTO FALLBACKでnpxをすべての命令として見つからないfallbackアドレス