Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

2.4K
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!