#npm #npm-scripts
Вопрос:
Я просто пробую NPM в качестве системы сборки для небольшого проекта, и я хотел бы спросить, есть ли простой и простой в обслуживании способ изменить рабочий каталог для сценариев сборки. Моей первой мыслью было что-то вроде
"scripts": {
"cd:workdir": "cd src/path/to/my/work/dir/",
"task:1": "npm run cd:workdir amp;amp; command1",
"task:2": "npm run cd:workdir amp;amp; command2",
[...]
}
Но тогда швы command*
выполняются в другом процессе npm run cd:workdir
, так что это не работает.
Единственный рабочий способ, который я нашел до сих пор, — это:
"scripts": {
"task:1": "cd src/path/to/my/work/dir/ amp;amp; command1",
"task:2": "cd src/path/to/my/work/dir/ amp;amp; command2",
[...]
}
Но должен быть лучший способ сделать это, чтобы сохранить его СУХИМ и более удобным в обслуживании. Спасибо!
Ответ №1:
Я думаю, что вы можете использовать child_process.exec
для выполнения некоторых команд из файла javascript:
// task.js
const { exec } = require('child_process');
exec('command', {
cwd: 'src/path/to/my/work/dir/'
}, (error, stdout, stderr) => {
// handle error, stderr...
console.log(stdout)
});
и выполните этот файл javascript с помощью узла в сценарии npm: "task:1": "node task.js"
Комментарии:
1. Да, это работает, но это не совсем то, на что я надеялся. Мне понадобится файл javascript для каждой команды, или я мог бы написать полный сценарий сборки на javascript, который сделал бы сценарии npm устаревшими. Я предполагаю, что огромным недостатком использования сценариев npm является ограничение, вызванное файлом конфигурации json.