La estructura de mi proyecto es la siguiente:
packages/ client/ package.json server/ package.json shared/ package.json lerna.json package.json El archivo package.json del client contiene las siguientes dependencias:
{ "name": "@my-project/client", "dependencies": { // ... "@my-project/shared": "*", "cool-components": "^1.0.0', // ... } } @my-project/shared es el nombre del paquete del directorio packages/shared .
Estoy dispuesto a usar npm link para desarrollar la biblioteca cool-components y usar npm link para usar su código dentro de @my-project/client .
Actualmente, traté de ejecutar:
cd packages/client npm link cool-componentsY para desvincular:
npm unlink cool-components Pero recibo un error que dice que @my-project/shared no está en el registro de NPM.
Esto es absolutamente comprensible; Cuando ejecuto comandos NPM en el ámbito de @my-project/client , no está familiarizado con sus paquetes hermanos e intenta buscar este paquete en el registro. Esta es la razón por la que debemos usar lerna add en la raíz en lugar de npm install dentro de cada paquete.
Aunque entiendo la causa, no pude encontrar una forma adecuada de usar npm link para desarrollar otro paquete mientras lo usaba dentro de mi monorepo de Lerna.
Agregas @my-project/shared a @my-project/client con:
// this creates link between packages lerna add @my-project/shared --scope=@my-project/client Ahora, si revisa los módulos de nodo dentro @my-project/client , debería ver @my-project/shared .
Si desea acceder a una dependencia en su paquete de nodo, use
require.resolve : // require.resolve te dará la ruta absoluta
const packagePath = require.resolve("@my-project/build/index.js"); // to use the this package, for exampe in express.static // path.dirname will give you path until build directory // so you are going to serve up that folder app.use(express.static(path.dirname(packagePath)));en el lado del cliente, importar el módulo desde la ruta de los módulos del nodo debería funcionar sin ninguna configuración. Si no es así, intente resolver la ruta de los módulos del nodo a la ruta absoluta.