Saltar al contenido

¿La mejor manera de ejecutar npm install para carpetas anidadas?

Revisamos completamente cada secciones de nuestro sitio web con la meta de mostrarte en todo momento la información más veraz y actual.

Solución:

Prefiero usar la instalación posterior, si conoce los nombres de los subdirectorios anidados. En package.json:

"scripts": 
  "postinstall": "cd nested_dir && npm install",
  ...

Según la respuesta de @Scott, el script de instalación | postinstalación es la forma más sencilla siempre que se conozcan los nombres de los subdirectorios. Así es como lo ejecuto para múltiples subdirectorios. Por ejemplo, imagina que tenemos api/, web/ y shared/ subproyectos en una raíz monorepo:

// In monorepo root package.json

...
 "scripts": 
    "postinstall": "(cd api && npm install); (cd web && npm install); (cd shared && npm install)"
  ,

Si desea ejecutar un solo comando para instalar paquetes npm en subcarpetas anidadas, puede ejecutar un script a través de npm y principal package.json en su directorio raíz. El script visitará cada subdirectorio y se ejecutará npm install.

A continuación se muestra un .js script que logrará el resultado deseado:

var fs = require('fs');
var resolve = require('path').resolve;
var join = require('path').join;
var cp = require('child_process');
var os = require('os');
    
// get library path
var lib = resolve(__dirname, '../lib/');
    
fs.readdirSync(lib).forEach(function(mod) 
    var modPath = join(lib, mod);
    
    // ensure path has package.json
    if (!fs.existsSync(join(modPath, 'package.json'))) 
        return;
    

    // npm binary based on OS
    var npmCmd = os.platform().startsWith('win') ? 'npm.cmd' : 'npm';

    // install folder
    cp.spawn(npmCmd, ['i'], 
        env: process.env,
        cwd: modPath,
        stdio: 'inherit'
    );
)

Tenga en cuenta que este es un ejemplo tomado de un artículo de StrongLoop que aborda específicamente un sistema modular node.js estructura del proyecto (incluyendo componentes anidados y package.json archivos).

Como se sugirió, también podría lograr lo mismo con un script bash.

EDITAR: Hizo que el código funcionara en Windows

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *