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