Я бы посоветовал не запускать задачу из другого gulpfile, как вы хотите, особенно из пакета node_modules. Причина, по которой это не нужно, связана с тем, что пакет может изменить/обновить, а затем сломать ваш код из-за этого.
Желательно, чтобы вы просто скопировали задание gulpfile, которое вы хотите, либо в свой gulpfile, либо включите его в свой проект, либо просто создайте новый файл, в котором вы можете легко отличить его от вашего gulpfile и просто вызвать его, потребовав его в вашем собственном gulfile, как и любой другой пакет и/или JS-функцию. При любом из этих параметров не забудьте установить зависимости в свои файлы package.json
, а затем запустите npm install
.
Примечание: Чтобы запустить задачу глотка внутри задачи глотка вы можете использовать
gulp.start('taskname')
Хотя нижеследующие следует использовать только в том случае совершенно необходимо. Кроме того, он будет устаревшим в новой версии Gulp v4 (refer to this). Способ вызова задачи - это просто создать функцию, указанную выше, и вызвать эту функцию в вашем gulpfile.
Пример функции глотком вызова:
var someFile = require('./someFile.js');
gulp.task('my-custom-task', function() {
someFile.doSomething('foo', 'bar');
});
Если функция что-то делает асинхронно, он должен вызвать функцию обратного вызова в конце, так что Глоток может знать, когда это делается:
var someFile = require('./someFile.js');
gulp.task('my-custom-task', function (callback) {
someFile.doSomething('foo', 'bar', callback);
});
Я могу понять беспокойство. Моя цель состояла в том, чтобы сделать это одной задачей глобализации для простоты. Мой план состоял в том, чтобы запустить 'packageA', который выводит файл в' dist' каталог 'packageA'. Оттуда я захватил этот файл и поместил его в каталог js' моего проекта, отсюда необходимость синхронных вызовов. –
Если вы хотите синхронизировать вызовы, и вам нужно знать, когда закончится последняя задача, я рекомендую вам изучить модуль [Run-Sequence Module] (https://www.npmjs.com/package/run-sequence). Вы просто кладете вещи в том порядке, в котором хотите, и они будут запускаться в последовательности, где, когда вы закончите одну задачу, вы перейдете к следующей. Что в твоем случае кажется тем, чего ты хочешь. – CriCri
Спасибо! Я попробую некоторое сочетание этого решения и вернусь к вам. –