Запуск задачи gulp из одного gulpfile.js из другого gulpfile.js
Возможно, что-то не так с моим подходом, но у меня есть следующая ситуация:
- У меня есть
component-a
, у которого есть gulpfile. Одна из его задач (например, сборка) создает компонент и создает объединенный файл js в папке dist
- У меня есть
component-b
, у которого есть gulpfile. Одна из его задач (например, сборка) создает компонент и создает объединенный файл js в папке dist
- У меня есть проект, который использует оба компонента. Этот проект также имеет gulpfile, и в нем я хотел бы написать задачу, которая:
- выполняет задачу сборки из /components/component -a/gulpfile.js
- выполняет задачу сборки из /components/component -b/gulpfile.js
- concats/components/component-a/dist/build.js и /components/component -b/dist/build.js(я знаю, как это сделать)
Я не знаю, как выполнить задачу сборки из /components/component -?/gulpfile.js. Возможно ли это, или я должен иметь дело с этой ситуацией в противном случае?
Ответы
Ответ 1
требуют ( '') child_process икру;.
Запустить Gulpfile из другого каталога довольно просто с модулем Node child_process#spawn
.
Попробуйте адаптировать следующее под свои нужды:
// Use 'spawn' to execute shell commands with Node
const { spawn } = require('child_process')
const { join } = require('path')
/*
Set the working directory of your current process as
the directory where the target Gulpfile exists.
*/
process.chdir(join('tasks', 'foo'))
// Gulp tasks that will be run.
const tasks = ['js:uglify', 'js:lint']
// Run the 'gulp' executable
const child = spawn('gulp', tasks)
// Print output from Gulpfile
child.stdout.on('data', function(data) {
if (data) console.log(data.toString())
})
проглатывать-чух
Хотя использование gulp-chug
- один из способов, он был помещен в черный список сопровождающими gulp
за то, что...
"execing, слишком сложный и просто использует gulp в качестве globber"
официальный черный список гласит...
"Нет причин для этого, используйте модуль require-all или узел require"
Ответ 2
Может, это кому-то тоже поможет, поэтому я попробую. Я не знаю точно, что намеревается сделать OP, но вопрос похож на мою проблему, в которой мое решение состоит в том, чтобы получить доступ к другому файлу gulp другим способом, например, используя событие предварительной сборки проекта, например:
cd $(SolutionDir)\ProjectThatHasTargetGulpFile
gulp theTaskNeedToRun
Учитывая, что Gulp и NodeJs правильно установлены на машине (может работать в cmd).