postinstall runs 35 nested installs when used as a dependency, which consumers don't need

Abierto Apto para principiantes
#825 0 comentarios 0 reacciones 0 asignados Ver en GitHub

@aelmanaa ya está trabajando en esto.

Desde el 31/10/2026.

  • #826 de @aelmanaa — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
70/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
javascript, node.js
Área
build-system

Línea de trabajo

La lógica de postinstall se encuentra en npm/deepinstall.js; empieza ahí y ve cómo itera sobre las 35 carpetas codegen. Añade una guarda para que las instalaciones anidadas se omitan a menos que el paquete se esté desarrollando en un checkout (p. ej., comprueba un .git local o invocación de script dev). Done significa que instalar el paquete como dependencia ya no dispara las 35 instalaciones y el tamaño de node_modules se mantiene pequeño.

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

Descripción

Describe the bug
When postman-code-generators is installed as a dependency, the postinstall script (npm/deepinstall.js) runs a nested npm/yarn/pnpm install in each of the 35 codegen folders. Consumers don't need it: the codegens' runtime dependencies (lodash, postman-collection) are already dependencies of the root package and resolve from there, and lib/assets/languages.js is generated by prepack and published.

To Reproduce
npm i [email protected] in an empty project, with yarn 1 installed globally:

  • the script detects yarn (see #792) and runs yarn install --production --frozen-lockfile 35 times
  • node_modules/postman-code-generators grows from 3.0 MB to 97 MB
  • the step needs network access, and pnpm and npm 11 flag it as an install script that needs approval

With npm i --ignore-scripts [email protected] instead, every variant from getLanguageList() (35 across 21 languages) converts the same request to a byte-identical snippet.

Expected
No nested installs when installed as a dependency. They are only needed when developing this repo (npm install / npm run deepinstall in a checkout).

Related: #792, #806 (package manager detection). Skipping the step for consumers would avoid that detection path for them entirely.

Lenguaje dominante
JavaScript
Estrellas
1k
Forks
382
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de postmanlabs/postman-code-generators

Todos los issues de postmanlabs/postman-code-generators

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.