Migración total a pnpm 11.4#176
Conversation
Bumps [next](https://github.com/vercel/next.js) from 15.5.12 to 15.5.14. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](vercel/next.js@v15.5.12...v15.5.14) --- updated-dependencies: - dependency-name: next dependency-version: 15.5.14 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
Añadimos ignore-scripts=true en el .npmrc para evitar que los paquetes instalados ejecuten código automáticamente. Es una medida simple para que el proyecto sea más seguro.
Borramos definitivamente la carpeta `_deprecated` con componentes, utilidades y constantes que ya no se usaban tras la última auditoría. Así dejamos el proyecto más limpio y sin ruido innecesario.
Plantilla para issues detallados.
Se añade .docs/ a .gitignore para evitar que la documentación interna generada se registre en el repositorio.
Se limpia y reestablece el proposito de la carpeta para integracion real y profesional de documentacion a futuro.
- Agrega `.github/copilot-instructions.md` con reglas del proyecto para GitHub Copilot. - Configura el entorno de Cline con `AGENTS.md`, estructura en `.cline/` y habilidades específicas en `SKILL.md`. - Crea `.clineignore` para excluir carpetas innecesarias (`node_modules/`, `.next/`, `backup/`) del contexto de la IA. - Documenta en los archivos las convenciones de arquitectura (Next.js App Router, Prisma), seguridad (JWT, CSRF), testing nativo (`node:test`) y gestión de dependencias exactas. Esto asegura que las herramientas de IA tengan el contexto adecuado y respeten los estándares definidos en DevurityWeb al generar código inteligente.
- ci.yml: comentar servicio postgres y steps de BD; agregar tsc --noEmit - .coderabbit.yaml: perfil chill, auto-review en main y dev, sin tests ni inline comments - .husky/pre-commit: lint-staged en archivos .ts/.tsx staged - .husky/pre-push: tsc --noEmit como barrera de tipos - package.json: agregar prepare script, lint-staged config, husky@9.1.7 y lint-staged@16.4.0 (versiones exactas)
Introduce secciones para el estilo de comunicación, tono y formato: prohíbe emojis, recomienda usar bloques de alerta de GitHub y mantiene un lenguaje técnico y profesional.
Se añaden configuraciones para revisión automatizada avanzada: instrucciones de notas de versión en español, control de walkthrough (resumen de alto nivel, diagramas, archivos cambiados), activación de IA (in_progress_fortune, enable_prompt_for_ai_agents), detección de slop y nuevas métricas de revisión (estimar esfuerzo, issues/PRs relacionados y reviewers sugeridos).
Se añade .github/pull_request_template.md con plantilla detallada (versión completa y abreviada) para guiar descripciones, criterios de aceptación y pruebas.
Añade la directriz de seguir una estructura limpia.
…ransición (#171) * refactor: CI sin postgres, CodeRabbit yaml, Husky hooks - ci.yml: comentar servicio postgres y steps de BD; agregar tsc --noEmit - .coderabbit.yaml: perfil chill, auto-review en main y dev, sin tests ni inline comments - .husky/pre-commit: lint-staged en archivos .ts/.tsx staged - .husky/pre-push: tsc --noEmit como barrera de tipos - package.json: agregar prepare script, lint-staged config, husky@9.1.7 y lint-staged@16.4.0 (versiones exactas) * chore: pautas de comunicación Introduce secciones para el estilo de comunicación, tono y formato: prohíbe emojis, recomienda usar bloques de alerta de GitHub y mantiene un lenguaje técnico y profesional. * fix: refactor para revisión automatizada avanzada Se añaden configuraciones para revisión automatizada avanzada: instrucciones de notas de versión en español, control de walkthrough (resumen de alto nivel, diagramas, archivos cambiados), activación de IA (in_progress_fortune, enable_prompt_for_ai_agents), detección de slop y nuevas métricas de revisión (estimar esfuerzo, issues/PRs relacionados y reviewers sugeridos). * chore: plantilla de pull request Se añade .github/pull_request_template.md con plantilla detallada (versión completa y abreviada) para guiar descripciones, criterios de aceptación y pruebas. * chore/fix: Inserccion de resumen coderabbit no invasivo o demandante. Añade la directriz de seguir una estructura limpia.
- Migración completa a pnpm con restricción de package manager para asegurar consistencia en el entorno. - Actualización de dependencias clave a versiones estables y configuración de `pnpm-workspace.yaml` para mayor control sobre compilaciones y dependencias.
- Se elimina el archivo `.npmrc` anterior y se reemplaza por uno nuevo que permite explícitamente solo paquetes confiables para ejecutar scripts, mejorando la seguridad. - Se actualiza el README para prohibir el uso de npm, estandarizando el uso de `corepack` y `pnpm` para todo el equipo.
- Se reemplaza npm por pnpm en las pipelines de GitHub Actions y configuraciones de Vercel para asegurar consistencia con el resto del proyecto. - Se actualizan los hooks de Husky para ejecutar comandos mediante `pnpm exec`, eliminando cualquier dependencia residual de npm o npx.
- `scripts/migrate.mjs` para automatizar la limpieza de artefactos de npm y la configuración del entorno con pnpm. - Con tracker de progreso visual para guiar al equipo durante la sincronización de dependencias y la regeneración de Prisma, evitando errores comunes de transición.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reached
More reviews will be available in 45 minutes and 48 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughPR que realiza la migración completa del proyecto de npm a pnpm como gestor oficial, incluye un script de migración interactivo, actualiza todos los workflows de CI/CD y deployment, establece documentación centralizada de convenciones del proyecto, y configura herramientas de análisis y review. ChangesMigración a pnpm y configuración del proyecto
Esfuerzo de revisión estimado🎯 3 (Moderado) | ⏱️ ~25 minutos PRs potencialmente relacionadas
Labels sugeridas
Revisores sugeridos
Poema
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 7
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
README.md (1)
168-168:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winEliminar emojis Unicode en encabezados del README
Los títulos usan emojis (
🛠️,🤝,📄,👥,✨), lo que contradice la convención del repositorio para archivos Markdown.As per coding guidelines, en
**/*.mdse debe enfatizar con GitHub Markdown Alerts y no con emojis Unicode.Also applies to: 238-238, 271-271, 278-278, 305-305
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@README.md` at line 168, Remove the Unicode emojis from all Markdown headings and replace the emoji-bearing headings (e.g., "## 🛠️ Instalación y Uso", and the other headers containing `🤝`, `📄`, `👥`, `✨`) with plain headings (e.g., "## Instalación y Uso"); where emphasis or callouts are needed, add a GitHub Markdown alert block (blockquote starting with a bold label like **Note:**, **Important:**, etc.) immediately below the heading to provide the same emphasis previously conveyed by the emoji. Ensure you update every header instance that contains emojis so headings are emoji-free and use GitHub alert blocks for emphasis instead.Sources: Coding guidelines, Learnings
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/pull_request_template.md:
- Around line 14-16: The template's markdown tables (e.g., the table beginning
with "| Campo | Detalle |" and the other table blocks present later in the file)
lack blank lines before and/or after them, triggering markdownlint MD058; update
the .github/pull_request_template.md by inserting a single blank line
immediately before each table block and a single blank line immediately after
each table block so every table is surrounded by blank lines (apply this to the
table starting with "| Campo | Detalle |" and the other table blocks mentioned
in the review).
In @.github/workflows/ci.yml:
- Around line 45-50: Los pasos de GitHub Actions están apuntando a tags mutables
(pnpm/action-setup@v4, actions/setup-node@v4, actions/checkout@v4,
actions/cache@v4); cámbialos para usar commit SHAs fijos: busca el repositorio
oficial de cada acción, copia el SHA completo del commit que corresponde a la
versión que quieres (por ejemplo el último commit de la etiqueta v4) y sustituye
las referencias tipo `owner/name@v4` por `owner/name@<full-commit-sha>` en
`.github/workflows/ci.yml` para cada uso (`pnpm/action-setup`,
`actions/setup-node`, `actions/checkout`, `actions/cache`), luego guarda,
ejecuta la CI y confirma que todo pasa.
In `@AGENTS.md`:
- Around line 15-24: La guía contiene palabras truncadas que generan
instrucciones inválidas; reescribe las referencias correctamente: cambia
"ode:test" a "node:test", "ode:assert/strict" a "node:assert/strict", muestra el
ejemplo de destructuring como import { ok, strictEqual } from
"node:assert/strict"; corrige el prefijo de commits truncado a "refactor:" junto
a los otros prefijos "feature:" y "fix:", y arregla el comando de verificación a
"npm run build"; mantén el formato y contexto original en AGENTS.md para que las
referencias a node:test, node:assert/strict, import { ok, strictEqual },
feature:, fix:, refactor: y npm run build sean exactas y legibles.
In `@pnpm-workspace.yaml`:
- Line 10: Cambia la entrada postcss en pnpm-workspace.yaml de '>=8.5.10' a la
versión exacta '8.5.10' para asegurar una resolución determinista (editar la
clave postcss en pnpm-workspace.yaml), y actualiza los scripts/CI que ejecutan
pnpm install para usar el flag --frozen-lockfile (por ejemplo reemplazar
llamadas a `pnpm install` por `pnpm install --frozen-lockfile`) para evitar
cambios no intencionados del pnpm-lock.yaml en CI.
In `@README.md`:
- Around line 180-183: Reemplaza la línea de blockquote que empieza con "> ⚠️ Se
requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. NPM esta prohibido." por un
bloque de alerta GitHub continuo usando "> [!WARNING] ..." sin líneas en blanco
intermedias y unificando también el título "Migración npm -> pnpm (Actualización
Crítica)" dentro del mismo blockquote; asegúrate de mantener el texto completo
dentro del mismo bloque (no dividir con líneas vacías) para cumplir MD028 y la
guía de usar GitHub Markdown Alerts en README.md.
In `@scripts/migrate.mjs`:
- Around line 197-202: En la etapa de Corepack en scripts/migrate.mjs reemplaza
la llamada a runCommand('corepack', ['enable']) por runCommand('corepack',
['prepare', `pnpm@${CONFIG.pnpmVersion}`, '--activate']) y luego comprueba que
runCommand('pnpm', ['--version']) devuelva exactamente CONFIG.pnpmVersion; si
devuelve otro valor o falla, intenta un reintento razonable y, si sigue sin
coincidir, marca la tarea con tracker.updateTask('corepack', 'failed', ...) y
falla el proceso; asegúrate de actualizar tanto la rama de éxito
(tracker.updateTask('corepack','success',...)) como la de error/catch para
incluir el valor real de la versión obtenida y el contexto de
CONFIG.pnpmVersion.
In `@vercel.json`:
- Line 4: Actualiza el valor de la clave installCommand en vercel.json para
hacerlo determinista; reemplaza "pnpm install" por "pnpm install
--frozen-lockfile" en la entrada installCommand para forzar el uso del lockfile
durante despliegues y evitar cambios no deseados en dependencias.
---
Outside diff comments:
In `@README.md`:
- Line 168: Remove the Unicode emojis from all Markdown headings and replace the
emoji-bearing headings (e.g., "## 🛠️ Instalación y Uso", and the other headers
containing `🤝`, `📄`, `👥`, `✨`) with plain headings (e.g., "## Instalación y
Uso"); where emphasis or callouts are needed, add a GitHub Markdown alert block
(blockquote starting with a bold label like **Note:**, **Important:**, etc.)
immediately below the heading to provide the same emphasis previously conveyed
by the emoji. Ensure you update every header instance that contains emojis so
headings are emoji-free and use GitHub alert blocks for emphasis instead.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: e80c9051-7ac6-417d-b7b1-0b404a870b04
⛔ Files ignored due to path filters (2)
package-lock.jsonis excluded by!**/package-lock.jsonpnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (16)
.cline/README.md.cline/skills/devurity-project/SKILL.md.clineignore.coderabbit.yaml.github/copilot-instructions.md.github/pull_request_template.md.github/workflows/ci.yml.husky/pre-commit.husky/pre-push.npmrcAGENTS.mdREADME.mdpackage.jsonpnpm-workspace.yamlscripts/migrate.mjsvercel.json
| | Campo | Detalle | | ||
| |---|---| | ||
| | **Título** | `tipo:` [descripción] (ej. `feature: autenticación JWT`, `fix: error en login`) | |
There was a problem hiding this comment.
Ajustar espaciado alrededor de tablas para cumplir markdownlint (MD058)
Faltan líneas en blanco antes/después de varias tablas; esto genera warnings de lint en la plantilla.
Also applies to: 37-40, 66-68, 74-76, 85-87, 101-104
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 14-14: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/pull_request_template.md around lines 14 - 16, The template's
markdown tables (e.g., the table beginning with "| Campo | Detalle |" and the
other table blocks present later in the file) lack blank lines before and/or
after them, triggering markdownlint MD058; update the
.github/pull_request_template.md by inserting a single blank line immediately
before each table block and a single blank line immediately after each table
block so every table is surrounded by blank lines (apply this to the table
starting with "| Campo | Detalle |" and the other table blocks mentioned in the
review).
Source: Linters/SAST tools
| uses: pnpm/action-setup@v4 | ||
| with: | ||
| version: 11 | ||
|
|
||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Show the workflow and relevant lines with numbers
sed -n '1,120p' .github/workflows/ci.yml | nl -ba | sed -n '35,80p'
# Search for other uses of actions/*`@v4` in repository
rg -n --hidden --glob '!.git/*' "uses:\s*[^@]+@v4" .github/workflows || trueRepository: trbureiyan/DevurityWeb
Length of output: 109
🏁 Script executed:
#!/bin/bash
set -euo pipefail
sed -n '1,140p' .github/workflows/ci.yml | nl -ba | sed -n '35,90p'
rg -n --hidden --glob '!.git/*' "uses:\s*[^@]+@v4" .github/workflows || trueRepository: trbureiyan/DevurityWeb
Length of output: 109
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "=== ci.yml lines 35-90 ==="
sed -n '35,90p' .github/workflows/ci.yml | cat -n
echo "=== uses: ...@v4 in workflows ==="
rg -n --glob '.github/workflows/**/*.yml' --glob '.github/workflows/**/*.yaml' "uses:\s*[^@]+@v4" .github/workflows || trueRepository: trbureiyan/DevurityWeb
Length of output: 2536
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "=== Exact lines 35-70 with real line numbers ==="
awk 'NR>=35 && NR<=70 {printf "%d\t%s\n", NR, $0}' .github/workflows/ci.yml
echo "=== All uses: ...@v4 in .github/workflows ==="
rg -n --hidden --glob '!.git/*' "uses:\s*[^@]+@v4" .github/workflows || trueRepository: trbureiyan/DevurityWeb
Length of output: 1753
Fijar las GitHub Actions a un commit SHA (no a tags @v4) para reducir riesgo de supply chain.
En .github/workflows/ci.yml:
pnpm/action-setup@v4(líneas 45) yactions/setup-node@v4(línea 50) están atados a un tag mutable.- También hay
actions/checkout@v4(línea 42) yactions/cache@v4(línea 57) con el mismo problema.
Patrón recomendado
- uses: pnpm/action-setup@v4
+ uses: pnpm/action-setup@<commit-sha>
- uses: actions/setup-node@v4
+ uses: actions/setup-node@<commit-sha>📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 11 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| uses: pnpm/action-setup@<actual-commit-sha-for-v4> | |
| with: | |
| version: 11 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@<actual-commit-sha-for-v4> |
🧰 Tools
🪛 zizmor (1.25.2)
[error] 45-45: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
[error] 50-50: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/ci.yml around lines 45 - 50, Los pasos de GitHub Actions
están apuntando a tags mutables (pnpm/action-setup@v4, actions/setup-node@v4,
actions/checkout@v4, actions/cache@v4); cámbialos para usar commit SHAs fijos:
busca el repositorio oficial de cada acción, copia el SHA completo del commit
que corresponde a la versión que quieres (por ejemplo el último commit de la
etiqueta v4) y sustituye las referencias tipo `owner/name@v4` por
`owner/name@<full-commit-sha>` en `.github/workflows/ci.yml` para cada uso
(`pnpm/action-setup`, `actions/setup-node`, `actions/checkout`,
`actions/cache`), luego guarda, ejecuta la CI y confirma que todo pasa.
Source: Linters/SAST tools
| - Use Node.js built-in test runner ( | ||
| ode:test) and | ||
| ode:assert/strict). | ||
| - **Always destructure** specific assert functions (e.g., import { ok, strictEqual } from "node:assert/strict";). | ||
|
|
||
| ## Workflow | ||
| - Follow conventional commits (feature:, fix:, | ||
| efactor:). | ||
| - Verify changes with | ||
| pm run build before pushing. |
There was a problem hiding this comment.
Corregir comandos y prefijos truncados en la guía
Aquí hay texto cortado (ode:test, ode:assert/strict, efactor:, pm run build) que deja instrucciones inválidas para testing y flujo de trabajo.
Propuesta de corrección
-- Use Node.js built-in test runner (
-ode:test) and
-ode:assert/strict).
+- Use Node.js built-in test runner (`node:test`) and `node:assert/strict`.
...
-- Follow conventional commits (feature:, fix:,
-efactor:).
-- Verify changes with
-pm run build before pushing.
+- Follow conventional commits (feature:, fix:, refactor:).
+- Verify changes with `pnpm run build` before pushing.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@AGENTS.md` around lines 15 - 24, La guía contiene palabras truncadas que
generan instrucciones inválidas; reescribe las referencias correctamente: cambia
"ode:test" a "node:test", "ode:assert/strict" a "node:assert/strict", muestra el
ejemplo de destructuring como import { ok, strictEqual } from
"node:assert/strict"; corrige el prefijo de commits truncado a "refactor:" junto
a los otros prefijos "feature:" y "fix:", y arregla el comando de verificación a
"npm run build"; mantén el formato y contexto original en AGENTS.md para que las
referencias a node:test, node:assert/strict, import { ok, strictEqual },
feature:, fix:, refactor: y npm run build sean exactas y legibles.
| unrs-resolver: true | ||
|
|
||
| overrides: | ||
| postcss: '>=8.5.10' |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== pnpm-workspace.yaml (around line 10) =="
nl -ba pnpm-workspace.yaml | sed -n '1,40p'
echo
echo "== Search for pnpm overrides / postcss usage =="
rg -n --hidden -S "overrides:|postcss" pnpm-workspace.yaml package.json **/package.json 2>/dev/null || true
echo
echo "== Any pnpm config files (if present) =="
ls -la | rg -n "pnpm|\\.npmrc|\\.pnpmfile\\.cjs|\\.pnpmfile\\.js" || trueRepository: trbureiyan/DevurityWeb
Length of output: 170
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Top of pnpm-workspace.yaml (first 40 lines, with numbers) =="
awk '{printf "%4d\t%s\n", NR, $0}' pnpm-workspace.yaml | sed -n '1,40p' || true
echo
echo "== Exact match for postcss in pnpm-workspace.yaml =="
rg -n "postcss" pnpm-workspace.yaml || true
echo
echo "== Search for overrides blocks (and postcss) in package.json files =="
fd -e json -a package.json . 2>/dev/null | head -n 200 | cat > /tmp/pkgfiles.txt
while IFS= read -r f; do
echo "-- $f --"
rg -n "overrides|postcss" "$f" || true
done < /tmp/pkgfiles.txt
echo
echo "== List pnpm-related root config files (if present) =="
ls -la | rg -n "(pnpm|\\.npmrc|\\.pnpmfile|\\.yarnrc|package\\.json|pnpm-workspace\\.yaml)" || trueRepository: trbureiyan/DevurityWeb
Length of output: 904
Fija postcss a una versión exacta en pnpm-workspace.yaml (overrides)
En pnpm-workspace.yaml (línea 10) se usa un rango ('>=8.5.10'), lo que puede hacer que al regenerar el pnpm-lock.yaml se resuelva a una versión distinta. Fijarlo a 8.5.10 mantiene la resolución determinista.
Diff propuesto
overrides:
- postcss: '>=8.5.10'
+ postcss: '8.5.10'En CI/scripts, usa pnpm install --frozen-lockfile para evitar cambios involuntarios del lockfile.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| postcss: '>=8.5.10' | |
| postcss: '8.5.10' |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@pnpm-workspace.yaml` at line 10, Cambia la entrada postcss en
pnpm-workspace.yaml de '>=8.5.10' a la versión exacta '8.5.10' para asegurar una
resolución determinista (editar la clave postcss en pnpm-workspace.yaml), y
actualiza los scripts/CI que ejecutan pnpm install para usar el flag
--frozen-lockfile (por ejemplo reemplazar llamadas a `pnpm install` por `pnpm
install --frozen-lockfile`) para evitar cambios no intencionados del
pnpm-lock.yaml en CI.
Sources: Coding guidelines, Learnings
| > ⚠️ Se requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. NPM esta prohibido. | ||
|
|
||
| > [!IMPORTANT] | ||
| > **Migración npm -> pnpm (Actualización Crítica)** |
There was a problem hiding this comment.
Reemplazar advertencia con emoji por un bloque de alerta válido y continuo
La advertencia actual usa > ⚠️ ... y además introduce una línea en blanco dentro del blockquote, activando MD028. Conviene unificarla como alerta GitHub (> [!WARNING]) sin cortes.
Propuesta de corrección
-> ⚠️ Se requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. NPM esta prohibido.
-
-> [!IMPORTANT]
+> [!WARNING]
+> Se requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. npm está prohibido.
+>
+> [!IMPORTANT]
> **Migración npm -> pnpm (Actualización Crítica)**As per coding guidelines, en **/*.md se debe usar GitHub Markdown Alerts para énfasis en lugar de emojis.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| > ⚠️ Se requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. NPM esta prohibido. | |
| > [!IMPORTANT] | |
| > **Migración npm -> pnpm (Actualización Crítica)** | |
| > [!WARNING] | |
| > Se requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. npm está prohibido. | |
| > | |
| > [!IMPORTANT] | |
| > **Migración npm -> pnpm (Actualización Crítica)** |
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 181-181: Blank line inside blockquote
(MD028, no-blanks-blockquote)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@README.md` around lines 180 - 183, Reemplaza la línea de blockquote que
empieza con "> ⚠️ Se requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. NPM esta
prohibido." por un bloque de alerta GitHub continuo usando "> [!WARNING] ..."
sin líneas en blanco intermedias y unificando también el título "Migración npm
-> pnpm (Actualización Crítica)" dentro del mismo blockquote; asegúrate de
mantener el texto completo dentro del mismo bloque (no dividir con líneas
vacías) para cumplir MD028 y la guía de usar GitHub Markdown Alerts en
README.md.
Sources: Coding guidelines, Linters/SAST tools
| tracker.updateTask('corepack', 'running', 'Enabling corepack...'); | ||
| await runCommand('corepack', ['enable']); | ||
|
|
||
| // Check pnpm version | ||
| const version = await runCommand('pnpm', ['--version']).catch(() => 'unknown'); | ||
| tracker.updateTask('corepack', 'success', `pnpm v${version} active`); |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# 1) Mostrar el contexto del fichero alrededor de las líneas indicadas
nl -ba scripts/migrate.mjs | sed -n '150,260p'
# 2) Localizar definición/uso de CONFIG.pnpmVersion
rg -n "CONFIG\.pnpmVersion|pnpmVersion" scripts/migrate.mjs
# 3) Buscar otras invocaciones de corepack en el repo
rg -n "corepack\s+(enable|prepare|use|disable)" -S .Repository: trbureiyan/DevurityWeb
Length of output: 109
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# 1) Verificar herramientas básicas disponibles
command -v rg >/dev/null && echo "rg: ok" || echo "rg: missing"
command -v cat >/dev/null && echo "cat: ok" || echo "cat: missing"
command -v sed >/dev/null && echo "sed: ok" || echo "sed: missing"
# 2) Ubicar el bloque exacto de corepack en scripts/migrate.mjs
rg -n "tracker\.updateTask\('corepack'|corepack enable|corepack prepare|CONFIG\.pnpmVersion|pnpmVersion" scripts/migrate.mjs
echo "---- context around corepack block ----"
# 3) Mostrar contexto aproximado (sin nl)
sed -n '170,230p' scripts/migrate.mjs
echo "---- repo-wide corepack usage ----"
rg -n "corepack\s+(enable|prepare|use|disable)" -S .Repository: trbureiyan/DevurityWeb
Length of output: 3321
Asegura que Corepack active la versión exacta de pnpm (CONFIG.pnpmVersion).
En scripts/migrate.mjs (etapa Corepack) solo se ejecuta corepack enable y luego se muestra pnpm --version sin garantizar que coincida con CONFIG.pnpmVersion; además, en el catch solo se valida que pnpm exista, sin comprobar la versión. Cambiar a corepack prepare pnpm@${CONFIG.pnpmVersion} --activate y fallar (o reintentar) si pnpm --version no coincide en ambos flujos.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@scripts/migrate.mjs` around lines 197 - 202, En la etapa de Corepack en
scripts/migrate.mjs reemplaza la llamada a runCommand('corepack', ['enable'])
por runCommand('corepack', ['prepare', `pnpm@${CONFIG.pnpmVersion}`,
'--activate']) y luego comprueba que runCommand('pnpm', ['--version']) devuelva
exactamente CONFIG.pnpmVersion; si devuelve otro valor o falla, intenta un
reintento razonable y, si sigue sin coincidir, marca la tarea con
tracker.updateTask('corepack', 'failed', ...) y falla el proceso; asegúrate de
actualizar tanto la rama de éxito (tracker.updateTask('corepack','success',...))
como la de error/catch para incluir el valor real de la versión obtenida y el
contexto de CONFIG.pnpmVersion.
| "buildCommand": "prisma generate && prisma migrate deploy && npx tsx prisma/seed.ts && next build", | ||
| "installCommand": "npm install", | ||
| "buildCommand": "prisma generate && prisma migrate deploy && pnpm exec tsx prisma/seed.ts && next build", | ||
| "installCommand": "pnpm install", |
There was a problem hiding this comment.
Haz determinista el installCommand en Vercel usando --frozen-lockfile.
El installCommand actual es "pnpm install"; cámbialo a "pnpm install --frozen-lockfile" para evitar cambios en el lock y mantener despliegues reproducibles.
Diff propuesto
- "installCommand": "pnpm install",
+ "installCommand": "pnpm install --frozen-lockfile",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "installCommand": "pnpm install", | |
| "installCommand": "pnpm install --frozen-lockfile", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@vercel.json` at line 4, Actualiza el valor de la clave installCommand en
vercel.json para hacerlo determinista; reemplaza "pnpm install" por "pnpm
install --frozen-lockfile" en la entrada installCommand para forzar el uso del
lockfile durante despliegues y evitar cambios no deseados en dependencias.
- Se elimina la versión estática de `pnpm` en `ci.yml` para dejar que el `action-setup` utilice la versión definida por `packageManager` en el `package.json`.
Descripción
Este PR consolida el repositorio en pnpm 11.4.0 como único gestor soportado, elimina los rastros de npm del flujo de trabajo y deja CI, dependencias y documentación alineadas con instalaciones deterministas y revisión de seguridad más estricta.
Adicionalmente, incluye un script de migración (migrate.mjs) diseñado para que el equipo pueda sincronizar su entorno local sin fricción tras hacer
git pull.Commits incluidos
Qué cambia
packageManagerfield + Corepack).package-lock.jsony se usa pnpm-lock.yaml como fuente de verdad.preinstallmedianteonly-allow.pnpm/action-setup@v4y usapnpm install --frozen-lockfile.pnpm.^ni~).next15.5.15→15.5.19,nodemailer7.0.13→8.0.10, override depostcss >= 8.5.10.allowBuildspara paquetes confiables (Prisma, esbuild, sharp).Validación realizada
pnpm run lint— 0 errorespnpm run build— compilación exitosa (60 rutas)pnpm exec tsc --noEmit— 0 errores de tipospnpm audit— 0 vulnerabilidades conocidasGuía para el equipo
Important
Si ya trabajabas con npm, ejecuta el script de migración inmediatamente después de hacer
git pull:El script se encarga de todo: limpiar node_modules y
package-lock.json, activar Corepack/pnpm, instalar dependencias y regenerar el cliente Prisma. No necesitan instalar nada adicional.Reglas de trabajo diario
pnpm(el hookpreinstalllo impone).pnpm install. En CI usarpnpm install --frozen-lockfile.pnpm run dev,pnpm run build,pnpm run lint,pnpm audit.pnpm addopnpm remove, luego revisar el diff de pnpm-lock.yaml.package-lock.json.^ni~.Reglas que conviene respetar de ahora en adelante
allowBuilds).Tip
Si tienes problemas tras el pull, ejecuta
pnpm run migratey reporta el error en el canal del equipo.Summary by CodeRabbit
Release Notes
Documentación
Chores