Ответ 1
Вы можете использовать exec для запуска из скрипта
import {series} from 'async';
const {exec} = require('child_process');
series([
exec('npm run dev'),
exec('npm run test')
]);
У меня есть специальный скрипт для тестирования, который я могу запустить с npm run test
команды npm run test
, которая выполняет некоторый сценарий Node для запуска тестов e2e/unit. Но перед этим я должен запустить webpack dev-сервер с npm run dev
(это также некий пользовательский сценарий Node, подробности не имеют значения) в другом окне терминала. Таким образом, я хочу опустить npm run dev
вручную и переместить его в пользовательский сценарий npm run test
подлинности npm run test
, т.е. Я хочу программно запустить webpack dev сервер в сценарии Node. Как я могу выполнить npm run dev
программным образом с помощью сценария Node и остановить его? Заранее спасибо!
"dev": "node node_modules/webpack-dev-server/bin/webpack-dev-server.js --host 0.0.0.0 --history-api-fallback --debug --inline --progress --config config/config.js"
Вы можете использовать exec для запуска из скрипта
import {series} from 'async';
const {exec} = require('child_process');
series([
exec('npm run dev'),
exec('npm run test')
]);
Просто установите npm
:
npm install npm
Затем в вашей программе:
npm.command.run('dev', (err) => { ... });
Дополнительную информацию см. В источнике. Объект npm.command
является неофициальным API для npm.
Используйте PM2, это действительно полезно и легко...
npm install pm2
const pm2 = require('pm2');
pm2.start({
script: 'npm -- run monitorTheWeather',
autorestart : false
}, (err, apps) => {
pm2.disconnect()
if (err) { throw err }
})
В машинописи:
import { exec } from 'child_process'
import { promisify } from 'util'
const asyncExec = promisify(exec)
;(async () => {
await asyncExec('npm run db:seed')
await asyncExec('npm start')
})()