Saltar al contenido principal
Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Configuración de la Canalización de Tareas

Lerna delega la ejecución de scripts npm (como la creación de procesos) a Nx. El archivo nx.json es donde puedes configurar cómo Nx maneja esto.

consejo

Si no tienes nx.json, ejecuta npx lerna add-caching.

Ejecutar Tareas en Paralelo

Si quieres aumentar el número de procesos que ejecutan los scripts a, por ejemplo, 5 (por defecto son 3), pasa lo siguiente:

npx lerna run build --concurrency=5

Definir Dependencias de Tareas (Canalizaciones)

Sin nuestra ayuda, Lerna no puede saber qué objetivos (scripts) tienen prerrequisitos. Puedes definir dependencias de tareas en el archivo nx.json:

nx.json
{
...
"targetDefaults": {
"build": {
"dependsOn": ["^build"]
}
}
}

Con esto, Lerna sabe que antes de construir un proyecto, debe construir todas sus dependencias. Sin embargo, no hay restricciones para las pruebas.

Una vez que defines la propiedad targetDefaults, la bandera sort se ignora.

Este mecanismo es muy flexible. Veamos este ejemplo:

nx.json
{
...
"targetDefaults": {
"build": {
"dependsOn": ["^build", "prebuild"]
},
"test": {
"dependsOn": ["build"]
}
}
}

Nota: versiones antiguas de Nx usaban targetDependencies en lugar de targetDefaults. Ambos funcionan, pero se recomienda targetDefaults.

El símbolo ^ (llamado caret) significa "dependencias". Mientras "test": { "dependsOn": ["build"] } indica que la prueba de un proyecto depende de su propia construcción, "build": { "dependsOn": ["^build"] } significa que la construcción depende de las construcciones de todas sus dependencias.

Al ejecutar lerna run test --scope=myproj, esta configuración le indica a Lerna:

  1. Ejecutar el comando test para myproj

  2. Pero como existe una dependencia test -> build, Lerna primero ejecuta build para myproj.

  3. build define dependencias en prebuild (mismo proyecto) y en build de todas las dependencias. Por tanto, ejecutará prebuild y el script build de todas las dependencias.

Nota: Lerna no necesita ejecutar todas las construcciones antes de iniciar pruebas. El orquestador ejecutará tantas tareas en paralelo como sea posible, respetando las restricciones.

Situaciones como esta son bastante comunes:

Combinación de Objetivos

Al definir estas reglas en nx.json, se aplican a todos los proyectos del repositorio. También puedes definir reglas específicas por proyecto en su package.json.

{
...
"nx": {
"targets": {
"test": {
"dependsOn": [
"build"
]
}
}
}
}