Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

603
Views
Espacios de trabajo de NPM 7: ¿cómo instalar un nuevo paquete en el espacio de trabajo?

Si tengo un espacio de trabajo de NPM 7 como este:

 root - submodule0 - submodule1 - submodule2

y navego al directorio submodule0 y ejecuto npm i somepackage parece "romper" el espacio de trabajo al crear un nuevo paquete-lock.json en el directorio submodule0 e instalar todas las dependencias allí. En otras palabras, solo tiene el comportamiento anterior que existía antes de que creara el espacio de trabajo. Esperaba un comando similar a lerna donde pueda instalar un nuevo paquete en submodule0 desde la raíz . Algo como:

 npm i somepackage --scope submodule0

Hasta ahora, la única solución que puedo encontrar es editar submodule0 package.json y agregar somepackage manualmente. Luego ejecute npm i desde la raíz. Obviamente, esto no es lo ideal porque necesito buscar la última versión, navegar hasta el subdirectorio, abrir el paquete.json, etc., etc., en lugar de simplemente escribir una línea en la raíz.

over 4 years ago · Santiago Trujillo
6 answers
Answer question

0

Consulte la respuesta de mattwad anterior si tiene NPM v7.14.0 o superior

respuesta original

No estaba muy contento con las sugerencias, pero las combiné todas para usarlas en un script npm sin dependencias:

 { "add": "npm install --package-lock-only --no-package-lock --prefix", "postadd": "npm install" }

Esto se puede usar de la siguiente manera: npm run add -- submodule0 somepackage

over 4 years ago · Santiago Trujillo Report

0

En mi caso, que es similar al tuyo, eliminé todas las dependencias de todos los proyectos internos, eliminé también el paquete-lock.json e instalé todo en la raíz.

 / node_modules package.json >> all dependencies package-lock.json >> the only lock file that exists in the repo /packages /A package.json >> no dependencies -- no package-lock.json /B package.json >> no dependencies -- no package-lock.json /C package.json >> no dependencies -- no package-lock.json

De esta manera, la carpeta node_modules SOLAMENTE reside en la raíz, y también el archivo package-lock.json está en la raíz.

Si permitía que cada proyecto tuviera su propio paquete-lock.json, comencé a ver errores de instalación y tiempo de ejecución (porque cada proyecto podría tener sus propios node_modules y su propia versión de una dependencia).

Esta es la mejor manera en que veo que funciona.

over 4 years ago · Santiago Trujillo Report

0

Después de intentar usar la instalación de npm install con --prefix --save --package-lock-only --no-package-lock options, npm siempre da el error E404 - Not Found para mis propios paquetes del monorepo que son aún no publicado en un registro. Entonces, incluso cuando intento instalar paquetes externos, falla debido a mis dependencias actuales en el paquete.json.

Para solucionar este problema, terminé con una combinación de las sugerencias anteriores:

 "scripts": { "add": "add-dependencies $npm_config_scope/package.json", "postadd": "npm i", }, "devDependencies": { "add-dependencies": "^1.1.0" },

Entonces puedo hacer:

 npm run add --scope=packages/app express npm run add --scope=packages/core eslint jest -D

Esto funciona bien para instalar paquetes externos. Para instalar mis propios paquetes que se encuentran dentro del monorepo, todavía tengo que editar manualmente el paquete.json, de lo contrario obtengo el package not found error .

over 4 years ago · Santiago Trujillo Report

0

Agregar solo en package.json

Puede usar esto para instalar el paquete solo en package.json (no necesita dependencias externas)

 npm i --prefix packages/test --save --package-lock-only --no-package-lock express

seguido de npm i para instalar la dependencia especificada en la raíz del repositorio mono node_modules

Lerna

También puede usar lerna para usar el nombre del espacio de trabajo para instalar la dependencia en

package.json

 { "name": "mono", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "wsi": "function workspaceinstall() { ( scope=$1; shift; lerna exec --scope \"$scope\" -- npm install --package-lock-only --no-package-lock \"$@\") }; workspaceinstall" }, "author": "", "license": "ISC", "workspaces": { "packages": [ "packages/**" ] } }

lerna.json

 { "version": "1.0.0", "npmClient": "npm", "packages": ["packages/**"] }
 npm run wsi [workspace name] [dependency name to install] npm run wsi @workspace/test express npm run wsi @workspace/test express --save-prod npm run wsi @workspace/test @types/express --save-dev

El script wsi solo modifica el paquete.json para el nombre del espacio de trabajo proporcionado, para instalar las dependencias, debe ejecutar npm i

over 4 years ago · Santiago Trujillo Report

0

También estoy desconcertado por el hecho de que los espacios de trabajo de npm se hayan lanzado sin esta funcionalidad.

Mi solución actual utiliza el paquete add-dependencies , que agrega dependencias a un archivo package.json declarado, mientras omite el proceso de instalación.

 npm i add-dependencies -g

Luego, desde el nivel superior del monorepo, puede ejecutar:

 npx add-dependencies ./submodule0/package.json somepackage && npm i

Con suerte, pronto se agregará un argumento --workspace a npm i para evitar este problema.

over 4 years ago · Santiago Trujillo Report

0

Se agregó soporte de espacio de trabajo para npm install y npm uninstall de npm en npm v7.14.0. Ahora puedes simplemente hacer:

 npm i somepackage --workspace=submodule0

Desinstalar módulos ha sido el mayor dolor, por lo que esto es realmente emocionante. El equipo de npm parece estar agregando lentamente soporte a los comandos uno por uno. Siga las actualizaciones aquí: https://github.com/npm/cli/blob/latest/CHANGELOG.md .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!