postinstall runs 35 nested installs when used as a dependency, which consumers don't need
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 runsyarn install --production --frozen-lockfile35 times node_modules/postman-code-generatorsgrows 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
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de postmanlabs/postman-code-generators
-
cURL snippet with double quotes adds a backslash before every # characterPosiblemente ocupada @sebxt la tomó hace 23 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
postmanlabs/postman-code-generators#822 · 1 comentario ·
-
curl codegen: file-type FormParam contentType ignored — ';type=' not emitted for multipart file partsPosiblemente ocupada @CrypticCortex la tomó hace 187 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
postmanlabs/postman-code-generators#815 · 2 comentarios ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
Todos los issues de postmanlabs/postman-code-generators
Issues similares
-
Add: Film Mania PLAbiertocheck:passed feeds:add
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Add resource: BlockVectraAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 76/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
SACGF/variantgrid#2791 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
hiero-ledger/hiero-sdk-js#4761 ·
Los mantenedores suelen responder en 1 día