angular / angular/angular-cli

Proposal: Asset Budgets potentially w/ subtypes

Abierto
#13,393 18 comentarios 61 reacciones 0 asignados Ver en GitHub
area: @angular-devkit/build-angular devkit/build-angular:browser feature feature: insufficient votes
Lenguaje dominante
TypeScript
Estrellas
27k
Forks
11.8k
Merge medio
14 h 23 min
PR fusionados (30 d)
162

Descripción

### Bug Report or Feature Request (mark with an `x`)
```
- [ ] bug report -> please search issues before submitting
- [x] feature request
```

### Command (mark with an `x`)
```
- [ ] new
- [x] build
- [ ] serve
- [ ] test
- [ ] e2e
- [ ] generate
- [ ] add
- [ ] update
- [ ] lint
- [ ] xi18n
- [ ] run
- [ ] config
- [ ] help
- [ ] version
- [ ] doc
```

### Versions
Mac High Sierra

```
MacBook-Pro:~ damien$ node --version
v8.9.4
```
```
MacBook-Pro:~ damien$ npm --version
5.6.0
```

```
MacBook-Pro:daffodil damien$ ng --version

_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/

Angular CLI: 7.1.0
Node: 8.9.4
OS: darwin x64
Angular: 7.1.1
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router, service-worker

Package Version
------------------------------------------------------------
@angular-devkit/architect 0.10.7
@angular-devkit/build-angular 0.10.7
@angular-devkit/build-ng-packagr 0.10.7
@angular-devkit/build-optimizer 0.10.7
@angular-devkit/build-webpack 0.10.7
@angular-devkit/core 7.1.0
@angular-devkit/schematics 7.1.0
@angular/cdk 7.1.0
@angular/cli 7.1.0
@angular/pwa 0.11.3
@ngtools/json-schema 1.1.0
@ngtools/webpack 7.0.7
@schematics/angular 7.1.0
@schematics/update 0.11.0
ng-packagr 4.4.0
rxjs 6.3.3
typescript 3.1.6
webpack 4.19.1
```

### Repro steps
1. Have bundle with 2mb budget
2. Desire a budget that says all image assets are under 1mb.
3. Create an asset that is 1.5mb
4. Be unable to know that the asset outside of budget range as the "any" budget type will catch the bundle.

### The log given by the failure
N/A

### Desired functionality
I would like to set a budget **specifically** for image assets in my `ng build`. Ideally, I can configure this per image type (as each image type has different compressability.

e.g
```
{
...
"configurations": {
"production": {
...
budgets: [
{"type": "asset:jpg", "maximumWarning": "150kb", "maximumError": "300kb"},
{"type": "asset:svg", "maximumWarning": "15kb", "maximumError": "30kb"},
{"type": "asset:png", "maximumWarning": "150kb", "maximumError": "300kb"},
]
}
}
}
```

The use case here is automation around enforcing filesize requirements for assets to prevent absurd image sizes from being included. While `"type": "any"` meets this requirement, there are niches of asset types that should have stricter requirements (e.g. `svg`).

### Mention any other details that might be useful
I'm trying to create budgets for the assets we use on the `Daffodil` project:
https://github.com/graycoreio/daffodil

Specifically, the PR in question:
https://github.com/graycoreio/daffodil/pull/171

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

La solicitud se centra en los presupuestos de ng build en la configuración de producción y propone los subtipos asset:jpg, asset:svg y asset:png; no se identifica ningún archivo fuente ni ninguna prueba. Empieza rastreando el manejo de presupuestos existente que utiliza ng build y, a continuación, verifica que los assets que superen el tamaño establecido activen los umbrales configurados de advertencia y error para cada subtipo.

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

Evaluación

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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.