ライブラリを変換して( ng-app-state )angular cliを使用します。今では v6はライブラリをサポートしています (イェーイ!)です。
足場を作り、いくつかのコードをコピーした後、ここに私の最初の質問があります:
サードパーティの依存関係をどのように/どこで追加しますか?
package.json
に、またはprojects/ng-app-state/package.json
に?
答えは一種の「両方」であることが判明しました。答えを理解することはこれから来ます:
package.json
は、開発中に使用されるものです。実際には、ユーザーが必要とするものも含めて、自分の使用のためにすべてのライブラリをここにインストールします。ライブラリのディレクトリ内ではなく、プロジェクトのルートにnode_modules/
ディレクトリのみを配置する必要があります(したがって、npm install
などを実行してください)。projects/ng-app-state/package.json
はnpmにデプロイされるものです(ビルドプロセスによっていくつかの追加フィールドが追加されます)。ライブラリのユーザーが必要とするdependencies
および/またはpeerDependencies
をコピーします。ここにdevDependencies
を置く意味はありません。それが完全な答えです。例を読んで例を参照してください。
私の場合、package.json
には多くのdependencies
とdevDependencies
の長いリストがあります(それは 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"
}
}
package.json
にpeerDependencies
として追加する必要があります
サードパーティの依存関係は、projects/ng-app-state/package.json
のdependencies
に配置する必要があります
ただし、サードパーティの依存関係もng 6をサポートしている場合、別の質問があり、この質問の範囲を超えて複雑になります。ライブラリでng updateを呼び出すか、ng 6バージョンのライブラリが存在することを期待する回路図を開発する必要があるかもしれません。