У меня есть несколько задач gulp, которые используют plop.js для изменения определенного файла. Если я запускаю задачи самостоятельно, они работают просто отлично.
Теперь у меня есть программа-оболочка, в которой я запрашиваю пользователя, какую из задач он хочет выполнить, и затем я хотел бы использовать gulp.series()
.
Все они работают, но для тех задач, для которых требуется изменить один и тот же исходный файл, будет применяться только первая модификация. Кажется, что задачи на самом деле не выполняются последовательно, что позволяет завершить первое изменение, а затем перейти ко второму ...
Вот код:
const gulp = require('gulp')
const strings = {
polyfill: `polyfill-string-which-is-added-to-file`, // I simplified this one
modernizr: `{ src: '/js/modernizr-custom.js', async: true, defer: true }`
}
/*
* Replace specific comments with a string
* Using plop modify actions
*/
function replaceComment(path, template, pattern) {
console.log(`? Replacing ${pattern} in ${path}...`)
const nodePlop = require('node-plop')
const plop = nodePlop()
const generator = plop.setGenerator('replace', {
prompts: [],
actions: [
{
type: 'modify',
path,
pattern,
template
}
]
})
generator
.runActions()
.then(results => {
console.log(`?✅ Sucessfully modified ${path} with ${template}`)
})
.catch(err => {
console.log('err', err)
})
}
gulp.task('add-polyfill', function(done) {
console.log('Adding IE11 polyfill to nuxt.config.js ...')
const path = './nuxt.config.js'
const pattern = '\/\*\ setup-autocomment-polyfill\ \*\/' // eslint-disable-line
const template = strings.polyfill
replaceComment(path, template, pattern)
done()
})
gulp.task('add-modernizr', function(done) {
console.log('Adding modernizr script to nuxt.config.js ...')
const path = './nuxt.config.js'
const pattern = '\/\*\ setup-autocomment-modernizr\ \*\/' // eslint-disable-line
const template = strings.modernizr
replaceComment(path, template, pattern)
done()
})
gulp.task('setup', function(done) {
return gulp.series('add-modernizr' , 'add-polyfill')(done)
})
Iбыл бы очень рад, если бы кто-то мог дать мне указатель здесь. Должен ли я больше работать с обещаниями? Или почему gulp.series на самом деле не делают этого в серии - я имею в виду задачи на их собственной работе ...
Приветствия и Заранее спасибо