Запустите npm install программно в указанной папке - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу запустить npm install с помощью машинописного кода в указанном каталоге.

Я нашел этот код:

npm.load({}, function(err: any) {
    // handle errors

    // install module ffi
    npm.commands.install(["hello-world@0.0.1"], function(err: any, data: any) {
    // log errors or data
    });

    npm.on('log', function(message: any) {
    // log installation progress
    console.log(message);
    });
});

Но теперь я не хочу устанавливать hello-world, а просто запустить npm install (без какого-либо пакета).

Кроме того, он должен запускаться по пути, который я могу указать, например ./folder/subfolder

Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Вы можете создать nodejs script, который ожидает путь к каталогу от пользователя, создать дочерний процесс и выполнить в нем эту команду.

index.js

const { exec } = require('child_process');
exec(`cd /${process.env.PATH} | npm install`, (error, stdout, stderr) => {
  if (error) {
    console.error(`exec error: ${error}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});


PATH=/path_of_directory_to_run_npm_install node index.js

Подробнеео child_process из документации по nodejs - https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback

0 голосов
/ 16 ноября 2018

Помимо exec также можно использовать пакет npm:

import * as cp from 'child_process';
var npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';

var path = '/path_to_npm_install';
const result = cp.spawnSync( npm, ['install'], {
     cwd: path
}); 
0 голосов
/ 14 ноября 2018

Если вы используете Nodejs, который, я думаю, вы используете, вы можете запустить

child_process.exec('npm install') // or any other command which you give from terminal or command prompt

Проверьте документацию для child_process https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...