tutorial proyecto instalar español crear componente comandos cli angular-cli angular-cli-v6

angular cli - proyecto - CLI angular 6: Dónde colocar las dependencias de la biblioteca.



instalar angular 6 (3)

Estoy convirtiendo una biblioteca ( ng-app-state ) para usar el cli angular, ahora que v6 es compatible con las bibliotecas (¡yay!).

Después de andamiajes y copias en algún código, aquí está mi primera pregunta: ¿cómo / dónde agrego dependencias de terceros? ¿A package.json , oa projects/ng-app-state/package.json ?


Las dependencias de terceros se deben colocar en dependencies de projects/ng-app-state/package.json

Sin embargo, si las dependencias de terceros también admiten ng 6, entonces tiene una pregunta diferente y una mayor complejidad más allá del alcance de esta pregunta. Diré brevemente que es posible que tenga que llamar a ng update en sus bibliotecas o desarrollar esquemas que llamen a los suyos que esperan que su ng 6 versión de la biblioteca esté presente.


Resulta que la respuesta es tipo de "ambos". Comprender la respuesta viene de esto:

  • package.json es lo que se utilizará durante el desarrollo. En realidad, instala todas las bibliotecas aquí para su propio uso, incluidas las que los usuarios también necesitarán. Solo debe tener un directorio node_modules/ en la raíz de su proyecto, no dentro del directorio de la biblioteca (así que solo ejecute npm install y similar aquí).
  • projects/ng-app-state/package.json es lo que se implementará en npm (con algunos campos adicionales agregados por el proceso de compilación). Así que copie en las dependencies y / o dependencies peerDependencies que peerDependencies usuarios de su biblioteca. No tiene sentido poner devDependencies aquí.

Esa es la respuesta completa. Sigue leyendo para ver un ejemplo.

En mi caso, package.json tiene una larga lista de muchas dependencies y devDependencies (puede verlo here ), pero todo esto solo me afecta a mí (y cualquiera que quiera contribuir a ng-app-state ). projects/ng-app-state/package.json es mucho más pequeño, y esto es lo que afecta a los usuarios de mi biblioteca:

{ "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" } }

Después de ejecutar ng build np-app-state --prod para generar lo que se lanzará a npm, esto es lo que termina en dist/ng-app-state/ (que es lo que debería publicarse):

{ "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" } }


Se debe agregar en package.json como peerDependencies