Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Officially support more elaborate externals

Abierto
#477 11 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
javascript, rollup
Área
build-system, cli

Línea de trabajo

Comienza con el manejo de external y exclude en src/index.js#L387-L388 y, después, revisa el comportamiento propuesto en el issue para --external y --external-glob en la línea de comandos. Se considera terminado cuando la semántica de configuración elegida esté implementada y documentada, incluido cómo se tratan las dependencias y los imports no estándar.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement :rocket: Feature Request

This is a feature request/Proposal

As a user of microbundle I want ways to configure which imports are to be considered external.
In order to reduce my bundle size and also to work with non-standard imports (images, fonts, ...) that are not supported by microbundle.

Status Quo

  1. As described in https://github.com/developit/microbundle/issues/283#issuecomment-523879163, there is a (I guess unoffical) way to use regex in the --exclude flag, which can be used to have rollup treat specific import statements as external.
  2. Presence of the --exclude flag triggers if pkg.dependencies are treated as external or not (see index.js#L387) I find that quite confusing and the behaviour is not documented.

Problem

Given I want to use --external .*/assets/.* to work with non-standard imports
And I also want all my dependencies to be excluded
Then I need to add all dependencies to --external causing code duplication and manual overhead.

Proposal

In order to fix the problem and reduce confusion I propose to have it work like this:

$ microbundle

Exclude dependencies, peerDependencies

$ microbundle --external .*/assets/.*

Exclude dependencies, peerDependencies and .*/assets/.*
And explicitly support regular expressions or globs under --external

$ microbundle --external .*/assets/.*,angular --include-dependencies

Exclude peerDependencies and .*/assets/.*
All normal dependencies ecxept angular are included in the bundle

Non-breaking alternative

I realize that the above proposal is really tied to my personal usecase of (miss-?)using --external for non-standard imports.
It would also introduce a potential pretty impactful breaking change (since users of microbundle might ship bundles that lack bundled dependencies).

Alternatively the current behaviour could stay as is, using regex in --external will be considered hacky. And we introduce a new, documented way to exclude assets:

$ microbundle --external-glob **/*.(jpg|png)

Exclude dependencies, peerDependencies and all imports matching **/*.(jpg|png)

$ microbundle --external angular --external-glob **/*.(jpg|png)

Exclude peerDependencies, angular, and all imports matching **/*.(jpg|png)


Let me know what you think about this. I would be really happy to implement the changes and provide a PR.

Lenguaje dominante
JavaScript
Estrellas
8.1k
Forks
358
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de developit/microbundle

Todos los issues de developit/microbundle

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.