Подтвердить что ты не робот

Запуск задачи 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. Возможно ли это, или я должен иметь дело с этой ситуацией в противном случае?

4b9b3361

Ответ 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).