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