Estoy usando la función de workspaces de trabajo de node/npm y el diseño es así:
. +-- package.json `-- packages `-- p1 `-- package.json `-- p2 `-- package.json ./package.json { … "workspaces": [ "./packages/*" ], … "dependcies": { … } … } npm install y todo funciona hasta ahora. Pero ahora me gustaría agregar el paquete p1 como dependencia del paquete p2 . Pero como tengo que hacer eso? Ingenuamente lo he intentado:
./packages/p2/package.json { … "dependencies": { "p1": "*" } … } Pero eso produce un error en la instalación, diciéndome que p1 no se puede encontrar en el registro.
ACTUALIZAR - usando npm cli
Desde el directorio raíz del proyecto, ejecute
npm i ./packages/p1 -w packages/p2 El ./ es IMPRESCINDIBLE o, de lo contrario, npm confundirá la instalación como una instalación de paquete desde el registro de npm frente a un directorio local.
Solución alternativa manual
Agregue manualmente p1 como una dependencia local proporcionando la ruta relativa de p1 en p2 package.json, así que en su ejemplo:
./packages/p2/package.json { … "dependencies": { "p1": "file:../p1" } … } Luego deberá ejecutar npm install en el paquete p2 .
Encontré esa solución en un artículo de LinkedIn Cosas que desearía haber sabido cuando comencé JavaScript monorepo con Lerna .
Ese enfoque ingenuo debería funcionar, lo que me hace sospechar que tal vez haya algo mal en su configuración. Un par de cosas que puedes verificar dos veces:
"name" en ./p1/package.json exactamente p1 ? (por ejemplo, si está utilizando nombres con ámbito, es posible que necesite usar @scopename/p1 en ./p2/package.json "dependencies" en su lugar)npm -v (actualmente v7.23.0)p1 esté vinculado correctamente en la carpeta ./node_modules , por ejemplo: ls -l ./node_modules/p1Pero como tengo que hacer eso?
Dado que todo está correctamente configurado, puede agregar paquetes como dependencias de un espacio de trabajo (incluido otro espacio de trabajo) usando el argumento -w <workspace-name> , por ejemplo: (agregando p1 como una dependencia de p2 ) npm install p1 -w p2 , ref: https://docs.npmjs.com/cli/v7/using-npm/workspaces#adding-dependencies-to-a-workspace