angular / angular/angular

Provide the ability to remove code needed only in dev mode from the production bundle

Abierto
#51,175 21 comentarios 76 reacciones 0 asignados Ver en GitHub
area: core feature feature: under consideration
Lenguaje dominante
TypeScript
Estrellas
101k
Forks
27.5k
Merge medio
1 d 19 h
PR fusionados (30 d)
288

Descripción

### Which @angular/* package(s) are relevant/related to the feature request?

core

### Description

Several NgRx libraries have features/checks that are only used in development mode (e.g. store runtime checks, component store lifecycle hooks check, store devtools, etc).

### Proposed solution

Expose the `ngDevMode`/`isNgDevMode` variable to the public API, so it can be used in Angular libraries that have dev mode-related functionalities, but also in user codebases if needed.

This feature could significantly reduce the size of production bundles in many Angular codebases.

### Alternatives considered

Currently, we can use `ngDevMode` to remove dev mode-related logic from the production bundle in the following way:

```ts
declare const ngDevMode: boolean;
const isNgDevMode = typeof ngDevMode === 'undefined' || !!ngDevMode;

// ...

if (isNgDevMode) {
console.warn('@ngrx/store: ...');
}
```

However, this global variable is not part of the public API and it can be risky to rely on it.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza en el core package de Angular siguiendo la implementación existente de ngDevMode/isNgDevMode y cómo se definen las exportaciones de la API pública. Revisa las comprobaciones que solo se realizan en desarrollo descritas en el issue y el comportamiento del production bundle. Se considera terminado cuando la variable está disponible públicamente para las bibliotecas de Angular y el código de usuario, con pruebas relevantes que confirmen el comportamiento previsto del production build.

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

Evaluación

Stack tecnológico
angular, typescript
Área
api, frontend
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.