Concepto: características predeterminadas
En este artículo se describe el concepto de características predeterminadas, sus implicaciones y estrategias para una administración eficaz.
Las características predeterminadas son un conjunto de características que se incluyen automáticamente cuando se instala un puerto, a menos que se deshabilite explícitamente. Estas características garantizan que una biblioteca mantenga un nivel de base de funcionalidad, incluso a medida que aumenta la complejidad de su grafo de dependencias.
Nota:
No todos los puertos contienen características predeterminadas.
Rol de características predeterminadas
Las características predeterminadas proporcionan una experiencia fácil de usar asegurándose de que las funcionalidades esenciales están disponibles en bibliotecas con características modulares.
Por ejemplo, una biblioteca capaz de extraer varios formatos de archivo podría tener cada formato como una característica opcional. Sin características predeterminadas, es posible que la biblioteca no incluya ningún algoritmo de extracción de fábrica, lo que complica el uso inicial.
Los paquetes instalados por vcpkg siempre incluirán sus características predeterminadas, a menos que se solicite explícitamente lo contrario. Este comportamiento se aplica a los paquetes requeridos directamente por el usuario a través de un archivo de manifiesto o la invocación de instalación de vcpkg, y a los paquetes necesarios como dependencias.
Deshabilitación de las características predeterminadas en el modo de manifiesto
Agregue el atributo a una declaración de dependencia para deshabilitar la "default-features": false
instalación de sus características predeterminadas.
Deshabilitar la instalación automática de características predeterminadas solo es posible para las dependencias solicitadas por el usuario.
Si desea deshabilitar las características predeterminadas para una dependencia transitiva, debe promoverla a una dependencia directa en el manifiesto del proyecto.
Deshabilitación de las características predeterminadas en modo clásico
Agregue la característica especial core
como parte de las características solicitadas de los paquetes que desea instalar.
Nota:
De forma similar a cómo funciona el modo de manifiesto, si desea deshabilitar las características predeterminadas para una dependencia transitiva; Debe promoverlo a una solicitud de instalación directa en la línea de comandos.
Ejemplo 1: Incluir una biblioteca con características predeterminadas
{
"name": "my-application",
"version": "0.15.2",
"dependencies": [
"extract-any"
]
}
En este escenario, extract-any
se instala con sus características predeterminadas, lo que garantiza la funcionalidad inmediata.
Ejemplo 2: Deshabilitar características predeterminadas (modo de manifiesto)
{
"name": "my-application",
"version": "0.15.2",
"dependencies": [
{
"name": "extract-any",
"default-features": false
}
]
}
Aquí, extract-any
se instala sin sus características predeterminadas, lo que permite una configuración personalizada.
Ejemplo 3: Deshabilitación de características predeterminadas (modo clásico)
vcpkg install extract-any[core]
Aquí, extract-any
se instala sin sus características predeterminadas mediante la característica especial core
.
Interacciones de características predeterminadas
Instalación de un puerto con características predeterminadas (comportamiento predeterminado):
vcpkg install extract-any
se instala con sus características predeterminadasextract-any
(extract-any[format-a]
), debido a la ausencia de solicitudes de características específicas.Especificar una característica sin deshabilitar los valores predeterminados: conduce a la instalación de
extract-any
con las características especificadas (format-b
) y predeterminadas (format-a
extract-any[format-a,format-b]
).vcpkg install extract-any[format-b]
Deshabilitar explícitamente las características predeterminadas:
vcpkg install extract-any[core]
seextract-any
instala sin ninguna característica predeterminada, ya[core]
que las excluye explícitamente.Dependencias transitivas y características predeterminadas:
vcpkg install extract-any[format-b] portB
puede dar lugar aextract-any[format-a,format-b] portB
que se instale siportB
depende deextract-any[format-a]
, pero no deshabilitaextract-any
explícitamente las características predeterminadas.Combinar puertos con especificaciones de características variadas:
vcpkg install extract-any[format-b] portB
instala , incluidasextract-any
las características predeterminadasextract-any[format-a, format-b] portB
, a menos que se excluya explícitamente.Deshabilitación completa de las características predeterminadas:
vcpkg install extract-any[core] portB
garantiza queextract-any
se instala solo con las características solicitadas explícitamente, excepto los valores predeterminados.
Administración de características predeterminadas
Para administrar eficazmente las características predeterminadas dentro de los proyectos:
- Ser explícito: especifique solo las características que necesita. Use
[core]
para deshabilitar las características predeterminadas cuando sea necesario. - Inspeccionar dependencias: use
vcpkg depend-info <port>
para comprender las resoluciones de dependencia y ajustar las configuraciones en consecuencia. - Usar invalidaciones y líneas base: aproveche las características de control de versiones y línea de base para tener más control sobre las resoluciones de dependencia.
Para obtener más información, vea lo siguiente:
La adopción de una estrategia clara para administrar las características predeterminadas ayudará a simplificar la administración de dependencias del proyecto, lo que garantiza incluir solo lo necesario para la funcionalidad de la aplicación.