servidor proyecto node ejemplos crear con componente comandos cli node.js npm

node.js - ejemplos - ¿Cómo puedo hacer que múltiples proyectos compartan el directorio node_modules?



servidor express (6)

Cada vez que hago proyectos, tengo que descargar todas las dependencias de los módulos de nodo. Sin copiar los node_modules, ¿hay alguna forma de compartir los node_modules centrales en múltiples proyectos?

como los siguientes, tengo que ejecutar muchos comandos cada vez ...

npm install gulp-usemin npm install gulp-wrap npm install gulp-connect npm install gulp-watch npm install gulp-minify-css npm install gulp-uglify npm install gulp-concat npm install gulp-less npm install gulp-rename npm install gulp-minify-html


Absolutamente puede compartir un directorio node_modules entre proyectos.

De la documentación del nodo :

Si el identificador del módulo pasado a require () no es un módulo nativo y no comienza con ''/'', ''../'' o ''./'', el nodo comienza en el directorio principal del módulo actual y agrega / node_modules e intenta cargar el módulo desde esa ubicación.

Si no se encuentra allí, se mueve al directorio principal, y así sucesivamente, hasta llegar a la raíz del sistema de archivos.

Por ejemplo, si el archivo en ''/home/ry/projects/foo.js'' se requiere require (''bar.js''), entonces el nodo buscaría en las siguientes ubicaciones, en este orden:

/home/ry/projects/node_modules/bar.js /home/ry/node_modules/bar.js /home/node_modules/bar.js /node_modules/bar.js

Así que simplemente coloque una carpeta node_modules dentro de su directorio de proyectos y coloque los módulos que desee. Solo los requieren como de costumbre. Cuando el nodo no encuentra un directorio node_modules en la carpeta de su proyecto, verificará la carpeta principal automáticamente. Así que haga su estructura de directorios así:

-myProjects --node_modules --myproject1 ---sub-project --myproject2

Así, incluso las dependencias de su subproyecto pueden recurrir a su repositorio principal node_modules.

Un inconveniente para hacerlo de esta manera es que tendrá que construir su archivo package.json manualmente (a menos que alguien sepa una forma de automatizar esto con gruñido o algo así). Cuando instala sus paquetes y agrega --save arg a un npm install lo agrega automáticamente a la sección de dependencias o su package.json, lo cual es conveniente.



El directorio principal debería verse así

node_modules Project 1 Project 2 Project 3 Project 4

simplemente abra el archivo Project 1/.angular-cli.json

cambiar el esquema

"$schema": "./node_modules/@angular/cli/lib/config/schema.json",

a

"$schema": "./../node_modules/@angular/cli/lib/config/schema.json"

y no olvides crear una carpeta vacía node_modules dentro del directorio de tu proyecto


Encontré un truco, solo eche un vistazo a los enlaces simbólicos (enlaces simbólicos) en Windows o Linux , está funcionando como accesos directos pero más potentes.

Simplemente necesita hacer un Junction para su carpeta node_modules cualquier lugar que desee. La unión no es más que un atajo a su carpeta original node_modules. Créelo dentro de la carpeta de su proyecto donde se habrían creado los node_modules reales si se npm install usado npm install .

Para lograr esto, necesita al menos una carpeta real node_modules luego hacer un cruce en los otros proyectos.

En Windows, puede usar el símbolo del sistema o una aplicación. Usar el símbolo del sistema te da un poco más de control, usar una aplicación es más fácil. Sugiero Link Shell Extension .


Prueba pnpm lugar de npm.

pnpm usa enlaces duros y enlaces simbólicos para guardar una versión de un módulo solo una vez en un disco.

Instalar con:

npm install -g pnpm

Para actualizar sus instalaciones existentes (y subdirectorios) use:

pnpm recursive install


Supongamos que tener un solo nodo_módulos debería contener todos los paquetes para todas las aplicaciones. por lo tanto, sus aplicaciones también compartirán la mayoría de las entradas únicas de package.json (solo debe cambiar el nombre)

mi idea sería tener una sola raíz y múltiples niveles de src como se muestra a continuación

root/package.json root/node_modules root//.. root/app1/src//.. root/app2/src//..

el único problema que podría enfrentar sería tener una copia de seguridad de json (o tsconfig) para cualquier aplicación y restaurarla cuando trabaje en ella o configure sus scripts de inicio para servir cualquier aplicación