Часы Gulp 4 не обнаруживают изменений - PullRequest
0 голосов
/ 20 декабря 2018

Возможно ли с помощью gulp v.4.0.0 искать файлы вне папки, где находится gulpfile.js?

В старых версиях gulp можно было установить путь к файлу ../../someFile.css и посмотретьдля его изменений, но в v4 он не обнаруживает изменения для того же пути.

// snip....

let rootFolder = '..\..\root\';

// Watch function
let watchThis = (filePath, gulpTasks) => {
    gulp.watch(filePath, gulp.series(gulpTasks))
        .on('change', function(path) {
            console.log(`${chalk.blue('Changed')}: ${chalk.yellow(path)}`);
        })
        .on('unlink', function(path) {
            console.log(`${chalk.red('Deleted')}: ${chalk.yellow(path)}`);
        });
}

// Watch task configuration
let watchFiles = () => {
    watchThis([`${rootFolder}/style1.scss`, `${rootFolder}/style2.scss`], 'scss')
    watchThis('./js/main.js', 'js')
}

// Final watch task
gulp.task('watch', gulp.series(
    'development',
    gulp.parallel(
        watchFiles,
        'startLiveServers'
    )
));

// ...snip

Изменения в файлах ['../../style1.scss', '../../style2.scss'] не будут обнаружены, но они будут для './js/main.js'.Я что-то упустил?

1 Ответ

0 голосов
/ 21 декабря 2018

Проблема с новым заданием часов Gulp 4 находится в пути.В отличие от задачи наблюдения из Gulp 3, новая версия не прощает и требует правильной структуры пути с правильными разделителями путей.

Таким образом, вместо использования путей, которые могут привести к ..\\..\\root\\/style1.scss, мы должны преобразовать пути в правильную структуру, такую ​​как ../../root/style1.scss.

Эта простая функция помогает, а остальное обрабатывается gulp и nodejs

let fixPath = (oldPath) => {
    const pathString = oldPath;
    const fix = /\\{1,}|\/{1,}/;

    return pathString.replace(new RegExp(fix, 'gm'), '/').replace(new RegExp(fix, 'gm'), '/')
}
...