web-dev-qa-db-ja.com

Angular CLI 6:ライブラリの依存関係を配置する場所

ライブラリを変換して( ng-app-state )angular cliを使用します。今では v6はライブラリをサポートしています (イェーイ!)です。

足場を作り、いくつかのコードをコピーした後、ここに私の最初の質問があります:

サードパーティの依存関係をどのように/どこで追加しますか?

package.jsonに、またはprojects/ng-app-state/package.jsonに?

38
Eric Simonton

答えは一種の「両方」であることが判明しました。答えを理解することはこれから来ます:

  • package.jsonは、開発中に使用されるものです。実際には、ユーザーが必要とするものも含めて、自分の使用のためにすべてのライブラリをここにインストールします。ライブラリのディレクトリ内ではなく、プロジェクトのルートにnode_modules/ディレクトリのみを配置する必要があります(したがって、npm installなどを実行してください)。
  • projects/ng-app-state/package.jsonはnpmにデプロイされるものです(ビルドプロセスによっていくつかの追加フィールドが追加されます)。ライブラリのユーザーが必要とするdependenciesおよび/またはpeerDependenciesをコピーします。ここにdevDependenciesを置く意味はありません。

それが完全な答えです。例を読んで例を参照してください。

私の場合、package.jsonには多くのdependenciesdevDependenciesの長いリストがあります(それは here で確認できます)が、これはすべて私(およびだれでも) ng-app-stateに貢献したい人)。 projects/ng-app-state/package.jsonははるかに小さく、これが私のライブラリのユーザーに影響するものです。

{
  "name": "ng-app-state",
  "version": "8.0.0",
  "author": "Simonton Software",
  "license": "MIT",
  "repository": "simontonsoftware/ng-app-state",
  "peerDependencies": {
    "@angular/common": ">=6.0.0 <7.0.0",
    "@angular/core": ">=6.0.0 <7.0.0",
    "@ngrx/store": ">=6.0.0 <7.0.0",
    "micro-dash": ">=3.5.0 <4.0.0"
  }
}

ng build np-app-state --prodを実行してnpmにリリースされるものを生成した後、これがdist/ng-app-state/になります(これは公開されるべきものです)。

{
  "name": "ng-app-state",
  "version": "8.0.0",
  "author": "Simonton Software",
  "license": "MIT",
  "repository": "simontonsoftware/ng-app-state",
  "peerDependencies": {
    "@angular/common": ">=6.0.0 <7.0.0",
    "@angular/core": ">=6.0.0 <7.0.0",
    "@ngrx/store": ">=6.0.0 <7.0.0",
    "micro-dash": ">=3.5.0 <4.0.0"
  },
  "main": "bundles/ng-app-state.umd.js",
  "module": "fesm5/ng-app-state.js",
  "es2015": "fesm2015/ng-app-state.js",
  "esm5": "esm5/ng-app-state.js",
  "esm2015": "esm2015/ng-app-state.js",
  "fesm5": "fesm5/ng-app-state.js",
  "fesm2015": "fesm2015/ng-app-state.js",
  "typings": "ng-app-state.d.ts",
  "metadata": "ng-app-state.metadata.json",
  "sideEffects": false,
  "dependencies": {
    "tslib": "^1.9.0"
  }
}
25
Eric Simonton

package.jsonpeerDependenciesとして追加する必要があります

12
Lal

サードパーティの依存関係は、projects/ng-app-state/package.jsondependenciesに配置する必要があります

ただし、サードパーティの依存関係もng 6をサポートしている場合、別の質問があり、この質問の範囲を超えて複雑になります。ライブラリでng updateを呼び出すか、ng 6バージョンのライブラリが存在することを期待する回路図を開発する必要があるかもしれません。

1
bhantol