web-dev-qa-db-ja.com

Npxとnpmの違いは?

私はラーニングリアクトを始めたばかりで、facebookは次の既製プロジェクトを提供することによって初期設定を単純化するのに役立ちます。
GithubのFacebookアカウントへのリンク: https://github.com/facebook/create-react-app
スケルトンプロジェクトをインストールする必要がある場合は、コマンドラインにnpx create-react-app my-appと入力する必要があります。
GithubのFacebookアカウントにnpx create-react-app my-appではなくnpm create-react-app my-appがあるのはなぜだろうか。

179
Paresh Maniyar

npxの紹介:npmパッケージランナー

NPM - 管理パッケージしかしは人生を楽にするものではありません実行中 any。
NPX - 実行中ノードパッケージ用のツール。

NPXNPMバージョン5.2+にバンドルされています

NPMは、それ自体では単純にパッケージを実行しません。実際には、パッケージは実行されません。 NPMを使用してパッケージを実行したい場合は、そのパッケージをpackages.jsonファイルに指定する必要があります。

実行可能ファイルがNPMパッケージを介してインストールされると、NPMはそれらにリンクします。

  1. localインストールは./node_modules/.bin/ディレクトリに作成された「リンク」を持ちます。
  2. globalインストールには、Linuxの場合はglobalのbin/ディレクトリ(例:/usr/local/bin)から、Windowsの場合は%AppData%/npmから「リンク」が作成されます。

あなたが読むべきドキュメント


NPM:

パッケージを特定のプロジェクトにローカルにインストールすることもできます。

npm install some-package

NodeJSにそのパッケージをコマンドラインから実行させたいとしましょう。

$ some-package

上記は fail になります。 グローバルにインストールされた パッケージのみ、それらの名前onlyを入力して実行できます。

これを修正して実行するには、ローカルパスを入力する必要があります。

$ ./node_modules/.bin/some-package

packages.jsonファイルを編集し、そのパッケージをscriptsセクションに追加することで、ローカルにインストールされたパッケージを技術的に実行することができます。

{
  "name": "whatever",
  "version": "1.0.0",
  "scripts": {
    "some-package": "some-package"
  }
}

次に npm run-script (またはnpm run)を使用してスクリプトを実行します。

npm run some-package

NPX:

npxは、<command>$PATH内にあるのか、ローカルプロジェクトバイナリ内にあるのかをチェックし、それを実行します。したがって、上記の例で、ローカルにインストールされたパッケージsome-packageを実行したい場合は、次のように入力するだけです。

npx some-package

npxのもう一つの major 利点は、以前にインストールされていなかったパッケージを実行する能力です。

$ npx create-react-app my-app

上記の例では、react app boilerplate が実行されたパスが生成され、常に最新バージョンのジェネレータまたはビルドツールを使用するようになります。これを使って。


関連する質問

  1. node_modulesにローカルにインストールされたパッケージの使い方
  2. NPM:./node_modules/.binフォルダーを読み込む方法
  3. npmスクリプトを使用してjsファイルをどのように実行しますか?
221
vsync

npxはnpmパッケージランナーです(xはおそらくeXecuteを表します)。一般的な用途は、一時的にまたは試用のためにパッケージをダウンロードして実行することです。

create-react-appは、プロジェクトのライフサイクルの中で一度だけ実行されることが予想されるnpmパッケージです。したがって、npxを使用して単一ステップでインストールおよび実行することをお勧めします。

https://www.npmjs.com/package/npx に記載されているように、npxはデフォルトでPATH内またはnode_modules/.binからコマンドを実行できます。

注: 少し掘り下げると、create-react-appはJavascriptファイル(おそらくLinuxシステムでは/usr/lib/node_modules/create-react-app/index.js)を指していることがわかります。ノード環境内で実行されます。これは単にいくつかのチェックを行うグローバルツールです。実際の設定はreact-scriptsによって行われ、その最新バージョンはプロジェクトにインストールされています。詳細については https://github.com/facebook/create-react-app を参照してください。

34
dww

NPX:

https://www.futurehosting.com/blog/npx-makes-life-easier-for-node-developers-plus-node-vulnerability-news/ :から

Web開発者は自分の開発マシン上に何十ものプロジェクトを持つことができ、各プロジェクトはそれぞれ独自のnpmインストール依存関係のセットを持ちます。数年前、GruntやGulpなどのCLIアプリケーションを扱うための通常のアドバイスは、それらを各プロジェクトにローカルにインストールし、グローバルにもインストールして、コマンドラインから簡単に実行できるようにすることでした。

しかし、グローバルにインストールすることは、それが解決するのと同じくらい多くの問題を引き起こしました。プロジェクトはさまざまなバージョンのコマンドラインツールに依存している可能性があり、多くの開発固有のCLIツールを使用してオペレーティングシステムを汚染することもまたすばらしいことではありません。今日、ほとんどの開発者はツールをローカルにインストールしてそのままにしておくことを好みます。

ローカルバージョンのツールを使用すると、開発者はグローバルにインストールされたバージョンのツールとの非互換性を心配せずにGitHubからプロジェクトを取得できます。 NPMはローカルバージョンをインストールするだけでいいのです。しかし、プロジェクト固有のインストールに問題がないわけではありません。プロジェクト内の正確な場所を指定したり、エイリアスを使ったりしないで適切なバージョンのツールを実行する方法

それがnpxが解決する問題です。 NPM 5.2に含まれる新しいツールのnpxは、プロジェクト内から呼び出されたときに適切なアプリケーションを実行するのに十分スマートな小さなユーティリティです。

たとえば、プロジェクトローカルバージョンのmochaを実行したい場合は、プロジェクト内でnpx mochaを実行すると、期待通りの動作が得られます。

Npxの便利な副次的な利点は、まだインストールされていないnpmパッケージを自動的にインストールすることです。したがって、ツールの作成者KatMarchánが指摘するように、地球環境を汚染しているBenny Hillに対処する必要なしに、npx benny-hillを実行できます。

Npxを試してみたい場合は、最新バージョンのnpmにアップデートしてください。

32
Venkat Ch

npxは明示的にインストールせずにパッケージのコマンドを実行します。

ユースケース

  • あなたはパッケージをグローバルにもローカルにもインストールしたくありません。
  • グローバルにインストールする権限がありません。
  • いくつかのコマンドをテストしたいだけです。

構文:

npx [options] [-p|--package <package>] <command> [command-arg]...

パッケージはオプションです。

npx   -p uglify-js         uglifyjs --output app.min.js app.js common.js
      +----------------+   +--------------------------------------------+
      package (optional)   command, followed by arguments

例えば:

Start a HTTP Server      : npx http-server
Lint code                : npx eslint ./src
                         # Run uglifyjs command in the package uglify-js
Minify JS                : npx -p uglify-js uglifyjs -o app.min.js app.js common.js
Minify CSS               : npx clean-css-cli -o style.min.css css/bootstrap.css style.css
Minify HTML              : npx html-minifier index-2.html -o index.html --remove-comments --collapse-whitespace
Scan for open ports      : npx evilscan 192.168.1.10 --port=10-9999
Cast video to Chromecast : npx castnow http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4

commandについての詳細:

24
Ninh Pham

これがNPXの実例です。npx cowsay hello

あなたのbash端末にそれをタイプすれば結果がわかるでしょう。これの利点は、npxが一時的にcowsayをインストールしたことです。 cowsayは恒久的にインストールされていないのでパッケージの汚染はありません。これは、パッケージの汚染を避けたい場合に、1回限りのパッケージに最適です。

他の回答で述べたように、npxは(npmで)パッケージをインストールしてから実行前に設定する必要がある場合にも非常に便利です。例えば。 npmを使用してjson.packageファイルをインストールしてから構成し、構成された実行コマンドを呼び出す代わりに、単にnpxを使用します。実際の例:npx create-react-app my-app

3
Risteard

NPMはパッケージマネージャです。NPMを使用してnode.jsパッケージをインストールできます。

NPXはnode.jsパッケージを実行するためのツールです。

そのパッケージをグローバルにインストールしてもローカルにインストールしてもかまいません。 NPXは一時的にインストールして実行します。 package.jsonファイルを構成してそれをスクリプト・セクションに含めると、NPMはパッケージを実行することもできます。

ローカルにインストールせずに、あるいはグローバルにNPXを使用してノードパッケージを素早くチェック/実行したい場合は、これを覚えておいてください。

1
cherankrish

簡単な定義:

npm-Javascriptパッケージマネージャー

npx-npmパッケージバイナリを実行する

0