ホームページ  >  記事  >  ウェブフロントエンド  >  いくつかの npm 依存関係パッケージ管理の共有

いくつかの npm 依存関係パッケージ管理の共有

小云云
小云云オリジナル
2018-01-27 13:52:232273ブラウズ

この記事では主に、知っておくべきいくつかの種類の npm 依存関係パッケージ管理について説明します。npm は、node.js のパッケージ マネージャーであり、必要な方はサンプル コードを通じて詳しく説明します。参考までに、以下のエディタで学習してみましょう。

npm は現在、次のタイプの依存関係パッケージ管理をサポートしています。

bundledDependency / BundleDependency
  • どちらを選択しますか依存関係管理を使用すると、package.json 内の対応する依存関係オブジェクトにそれを置くことができます。次のようになります。
 "devDependencies": {
 "fw2": "^0.3.2",
 "grunt": "^1.0.1",
 "webpack": "^3.6.0"
 },
 "dependencies": {
 "gulp": "^3.9.1",
 "hello-else": "^1.0.0"
 },
 "peerDependencies": { },
 "optionalDependencies": { },
 "bundledDependencies": []
  • 1 つずつ見てみましょう:

    依存関係
  • アプリケーションの依存関係、またはビジネスの依存関係、これが最も重要です。よく使用される依存関係パッケージ管理オブジェクト!これは、アプリケーションが依存する外部パッケージを指定するために使用されます。これらの依存関係は、アプリケーションのリリース後の通常の実行に必要ですが、テストまたはローカル パッケージ化中に使用されるパッケージは含まれません。次のコマンドを使用してインストールできます。

    npm install packageName --save
  • dependency は、パッケージ名とパッケージ バージョンを含む単純な JSON オブジェクトです。パッケージ バージョンはバージョン番号または URL アドレスです。例:
  • { 
     "dependencies" :{ 
     "foo" : "1.0.0 - 2.9999.9999", // 指定版本范围
     "bar" : ">=1.0.2 <2.1.2", 
     "baz" : ">1.0.2 <=2.3.4", 
     "boo" : "2.0.1", // 指定版本
     "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0", 
     "asd" : "http://asdf.com/asdf.tar.gz", // 指定包地址
     "til" : "~1.2", // 最近可用版本
     "elf" : "~1.2.3", 
     "elf" : "^1.2.3", // 兼容版本
     "two" : "2.x", // 2.1、2.2、...、2.9皆可用
     "thr" : "*", // 任意版本
     "thr2": "", // 任意版本
     "lat" : "latest", // 当前最新
     "dyl" : "file:../dyl", // 本地地址
     "xyz" : "git+ssh://git@github.com:npm/npm.git#v1.0.27", // git 地址
     "fir" : "git+ssh://git@github.com:npm/npm#semver:^5.0",
     "wdy" : "git+https://isaacs@github.com/npm/npm.git",
     "xxy" : "git://github.com/npm/npm.git#v1.0.27",
     }
    }

    devDependency

  • 開発環境の依存関係。依存関係の使用頻度に次いで 2 番目です。そのオブジェクト定義は依存関係と同じですが、その中のパッケージは開発環境でのみ使用され、実稼働環境では使用されない点が異なります。これらのパッケージは通常、単体テストまたはパッケージ化ツール (gulp、grunt、webpack、moca、coffee など) です。などを使用できます。 インストールには次のコマンドが使用されます:

    npm install packageName --save-dev
    例:
  • { "name": "ethopia-waza",
     "description": "a delightfully fruity coffee varietal",
     "version": "1.2.3",
     "devDependencies": {
     "coffee-script": "~1.6.3"
     },
     "scripts": {
     "prepare": "coffee -o lib/ -c src/waza.coffee"
     },
     "main": "lib/waza.js"
    }
    準備スクリプトは公開前に実行されるため、ユーザーはプロジェクトをコンパイルするときにそれに依存する必要はありません。開発モードでは、npm install を実行すると準備スクリプトも実行され、開発中に簡単にテストできます。

    この時点で、--save と --save-dev の違いは理解できましたか?

    peerDependency

    同等の依存関係、またはピア依存関係は、現在のパッケージ (つまり、作成したパッケージ) と互換性のあるホストのバージョンを指定するために使用されます。どのように理解すればよいでしょうか? 想像してみてください。gulp プラグインを作成しますが、gulp には複数のメイン バージョンがあり、現時点では、peerDependency を使用して次のように指定できます。 、peerDependency は、プラグインのどのホスト バージョンをインストールする必要があるかをユーザーに明確に伝えます。

    通常、プロジェクト内で 1 つのホストの多数のプラグイン (gulp など) を使用します。それらの間にホストの互換性がない場合、npm install の実行時に cli は次のようなエラー メッセージをスローして通知します。

    {
     "name": "gulp-my-plugin",
     "version": "0.0.1",
     "peerDependencies": {
     "gulp": "3.x"
     }
    }
    コマンド npm install gulp-my-plugin --save-dev を実行して、プラグインをインストールします。依存関係マップを見てみましょう:

    npm ERR! peerinvalid The package gulp does not satisfy its siblings' peerDependencies requirements!
    npm ERR! peerinvalid Peer gulp-cli-config@0.1.3 wants gulp@~3.1.9
    npm ERR! peerinvalid Peer gulp-cli-users@0.1.4 wants gulp@~2.3.0

    OK、いいですね!

    npm 1 と npm 2 が実行されることに注意してください。同じ依存関係を自動的にインストールすると、npm 3 は自動的にインストールされなくなり、警告が生成されます。 package.json ファイルに依存関係を手動で追加すると解決できます。

    optionalDependency

    インストールが失敗した場合でもプロジェクトが実行できる依存パッケージがいくつかある場合、または npm を実行し続けたい場合は、optionalDependency を使用できます。また、optionalDependency は依存関係内の同名の依存関係パッケージを上書きするため、両方の場所に記述しないでください。

    たとえば、オプションの依存関係パッケージはプログラムのプラグインのようなもので、存在しない場合は既存のロジックが実行されます。

    ├── gulp-my-plugin@0.0.1
    └── gulp@3.9.1

    bundledDependency /bundleDependency

    依存関係のパッケージ化、bundledDependency は、依存パッケージ名を含む配列オブジェクトです。公開すると、このオブジェクト内のパッケージは最終リリース パッケージにパッケージ化されます。例:

    try {
     var foo = require('foo')
     var fooVersion = require('foo/package.json').version
    } catch (er) {
     foo = null
    }
    if ( notGoodFooVersion(fooVersion) ) {
     foo = null
    }
    
    // .. then later in your program ..
    
    if (foo) {
     foo.doFooThings()
    }
    パッケージ化コマンド npm Pack を実行すると、生成された fe-weekly-1.0.0.tgz パッケージには fw2 と hello-else が含まれます。 ただし、これら 2 つのパッケージは最初に devDependency または依存関係で宣言する必要があることに注意してください。そうしないと、パッケージ化でエラーが報告されます。

    関連する推奨事項:

    Spring Boot に依存関係パッケージ Druid が導入されました


    node.js での npm と webpack の設定方法の詳細な説明

    最新バージョンの nodejs を使用して npm をインストールする方法

    以上がいくつかの npm 依存関係パッケージ管理の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。