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.
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:
{
...
"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:
{
...
"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:
-
Ejecutar el comando
testparamyproj -
Pero como existe una dependencia
test -> build, Lerna primero ejecutabuildparamyproj. -
builddefine dependencias enprebuild(mismo proyecto) y enbuildde todas las dependencias. Por tanto, ejecutaráprebuildy el scriptbuildde 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:
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"
]
}
}
}
}