Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

2.4K
Vistas
Incluir activos al construir una biblioteca angular

Estoy creando una biblioteca que contiene una fuente de icono personalizada. Sin embargo, cuando construyo mi biblioteca usando ng build <library-name> --prod , la carpeta de activos no está incluida en la compilación, lo que significa que los íconos no aparecen cuando se usa la compilación de producción.

Probé varias soluciones, como agregar la matriz de assets en angular.json y copiar la carpeta de activos en la carpeta dist creada.

Estoy usando Angular 8 y la biblioteca se creó usando angular-cli.

Intenté incluir las fuentes de dos maneras: usando @import url( '../assets/icon_font.css' ); en uno de los archivos de estilo y agregando ../assets/icon_font.css a styleUrls en uno de los componentes que lo requieren. ( icon_font.css es el archivo css que incluye las fuentes de iconos)

Aquí está el diseño de mi directorio de la biblioteca:

 - src - lib - assets - icon_font.css - font files - component that requires icons - style sheet that has @import icon_font.css - other components and classes

Me gustaría que el .ttf y otros archivos de fuentes en el directorio assets/ estén disponibles en la carpeta dist exportada.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Mirando otras publicaciones y problemas en github, parece que no hay forma de obligar al empaquetador a empaquetar activos junto con los archivos de compilación. Lo que terminé haciendo en cambio fue copiar la carpeta de assets a la carpeta dist manualmente antes de implementarla en npm. Después de eso, solo tendría que decirles a los usuarios que icon_font.css @import una de sus hojas de estilo.

over 4 years ago · Santiago Trujillo Denunciar

0

Como dijiste en tu respuesta, no fue posible obligar al empaquetador a empaquetar activos junto con los archivos de compilación.

Ahora, ng-packagr lanzó una nueva versión que le permite incluir los activos junto con los archivos de compilación:

Puede copiar estos activos utilizando la opción de activos.

Edite el archivo ng-package.json en su biblioteca (o el archivo projects/<your-lib>/ng-package.json si usa un espacio de trabajo multiproyecto) para definir los activos que deben incluirse:

 { "ngPackage": { "assets": [ "CHANGELOG.md", "./styles/**/*.theme.scss" ], "lib": { ... } } }

Más información aquí: https://github.com/ng-packagr/ng-packagr/blob/master/docs/copy-assets.md

over 4 years ago · Santiago Trujillo Denunciar

0

Como ya se dijo,la biblioteca angular ahora admite activos desde la v9.x de angular.
Pero no está bien explicado ensu sitio web . Para que funcione tendrás que:

  1. Agregue una carpeta de activos en la raíz de su proyecto de biblioteca
    ingrese la descripción de la imagen aquí
  2. Agregue "assets": ["./assets"], en el archivo ng-package.json de la biblioteca
 { "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", "dest": "../../dist/icon", "assets": ["./assets"], // <-- Add it here "lib": { "entryFile": "src/public-api.ts" } }

Recordatorio: la ruta tsconfig.lib.json no funciona en bibliotecas angulares, por lo que después de su cambio, es posible que deba editar manualmente la importación de los activos con la ruta relativa

  1. ng build custom-project --prod . Luego aparece en su carpeta dist.
    ingrese la descripción de la imagen aquí

Entonces podrías simplemente agregar lo que quieras en esta carpeta

Consejos adicionales: Úselo dentro de su proyecto

Luego, si desea usarlo en el proyecto al que se importa, haga:

Activos, js, estilos en angular.json

Agregue esos archivos a su archivo angular.json

 { /*...*/ "assets": [ // Import every assets { "glob": "**/*", "input": "./node_modules/custom-project/assets", "output": "/assets/" } ], "styles" : [ // Only custom css "node_modules/custom-project/assets/my-css-file.css" ], "scripts" : [ "node_modules/custom-project/assets/my-js-file.js" ] }

Js como parte de la aplicación.módulo

También puede agregar js directamente en el archivo de niños, incluso si no estoy seguro de si es realmente perezoso al cargar esos archivos .
ejemplo, en su archivo home.module.ts , importe

 import 'custom-project/assets/my-js-file.js'
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda