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

小云云
リリース: 2018-01-27 13:52:23
オリジナル
2337 人が閲覧しました

この記事では主に、知っておくべきいくつかの種類の 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 サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート