packagr library generate for create cli angular angular6 angular-library

library - Incluye "activos" en tu biblioteca angular 6



ng generate library (1)

Han pasado semanas, que busco una solución. Creé (con ng generar biblioteca) una biblioteca con la interfaz de usuario para nuevos proyectos web aquí en el trabajo ... de hecho, cada component de esa " template library " tiene el ViewEncapsulation.None . No hay ViewEncapsulation.None ... Sé que no es como deberíamos Use Angular , pero nos permitiría reutilizar todo el trabajo duro que se ha hecho en años anteriores.

Quiero "empaquetar" las hojas de estilo (.css files) en la library de manera que cuando alguien haga un " npm install templatelib " obtendrá todos los estilos y fuentes incluidos automáticamente en su aplicación, sin necesidad de hacerlo manualmente. Copia los styles y fonts en su src/app .

Quiero darles a mis usuarios una unidad atómica de una manera en que alguien solo necesita establecer una template-lib-tag en su app.component.html y todos están configurados ... entonces solo tendrían que agregar los components content que Quiero mostrar / usar dentro del diseño de plantillas.

He intentado casi todo lo que pude encontrar para "empaquetar" los activos, pero o bien obtengo errores que indican que la Data path "" should NOT have additional properties(styles) . cuando intento agregar activos o estilos a angular.json ... o no hace lo que quiero que haga, lo que resulta en errores que no pueden encontrar los activos durante el servicio ng .

¿Soy demasiado exigente de las bibliotecas angulares? ¿O es una biblioteca llena de components y su CSS no una unidad atómica que puedo plug a cualquier otra aplicación Angular?

¿Qué estoy haciendo mal / malentendido, y cómo debemos "empaquetar" los activos en nuestra biblioteca para que viajen a lo largo de la instalación del paquete?

Gracias por aclarar con antelación.


Ya estaba en el camino correcto con su solución con ViewEncapsulation.None . Puede crear un componente contenedor en la biblioteca que incluya todos los estilos que necesita globalmente. Luego use el componente como etiqueta raíz en su aplicación como sugiere en su publicación. Los estilos se incluyen automáticamente en toda la página.

Aquí es cómo se ve un componente de muestra:

import { Component, ViewEncapsulation } from ''@angular/core''; @Component({ selector: ''lib-assetlib'', template: ''<ng-content></ng-content>'', styleUrls: [''assetlib.component.css'', ''libstyles.css''], encapsulation: ViewEncapsulation.None }) export class AssetlibComponent { }

Puede importar muchos archivos css en los StyleUrls como ve en mi muestra. Luego simplemente agregue esto como la etiqueta raíz en su plantilla app.component y los estilos se aplicarán globalmente a toda la página. No hay necesidad de referenciar nada en el angular.json.

Ejemplo de componente de aplicación:

<lib-assetlib> <!--The content below is only a placeholder and can be replaced.--> <div style="text-align:center"> <h1> Welcome to {{ title }}! </h1> <img width="300" alt="Angular Logo" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg=="> </div> <h2>Here are some links to help you start: </h2> <ul> <li> <h2><a target="_blank" rel="noopener" href="https://angular.io/tutorial">Tour of Heroes</a></h2> </li> <li> <h2><a target="_blank" rel="noopener" href="https://github.com/angular/angular-cli/wiki">CLI Documentation</a></h2> </li> <li> <h2><a target="_blank" rel="noopener" href="https://blog.angular.io/">Angular blog</a></h2> </li> </ul> <i class="fas fa-stroopwafel"></i> <!--This uses a style that comes from the library--> </lib-assetlib>