Оказывается, ответ типа "оба". Понимание ответа исходит из этого:
package.json
- это то, что будет использоваться во время разработки. Вы фактически устанавливаете здесь все свои библиотеки для собственного использования, в том числе те, которые также потребуются пользователям. У вас должен быть только каталог node_modules/
в корне вашего проекта, а не в каталоге библиотеки (поэтому запускайте только npm install
и аналогичные здесь).
projects/ng-app-state/package.json
- это то, что будет развернуто в npm (с некоторыми дополнительными полями, добавленными в процессе сборки). Поэтому скопируйте dependencies
и / или peerDependencies
, которые понадобятся пользователям вашей библиотеки. Нет смысла ставить devDependencies
здесь.
Это полный ответ. Читайте дальше, чтобы увидеть пример.
В моем случае package.json
имеет длинный список из многих dependencies
и devDependencies
(вы можете увидеть это здесь ), но все это влияет только на меня (и любого, кто хочет внести свой вклад до 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"
}
}