Использование Gulp watch, Ax ios и Browsersyn c для получения HTTP-запроса перед перезагрузкой браузера при изменении файла - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь посмотреть 2 набора папок. Один набор просто требует перезагрузки браузера при изменении. Второй требует «повторной инициализации фреймворка» с помощью отдельного фонового http get перед перезагрузкой.

Моя текущая попытка обрабатывает это правильно один раз, но только один раз. Можете ли вы сказать мне, почему и как это исправить? Неприятная часть находится во втором задании.

const gulp = require('gulp');
const axios = require("axios");
const bs = require('browser-sync').create(); 
const { reload } = bs;

const url = "http://127.0.0.1:80/healthcheck?fwreinit=1";

var paths = {
        refresh: [
            "./layouts/**/*.*",
            "./views/**/*.*",
            "./includes/**/*.js",
            "./includes/**/*.css"
        ],
        reinit: [
            "./handlers/**/*.*",
            "./models/**/*.*",
            "./interceptors/**/*.*",
            "./config/**/*.*"
        ]
    }

gulp.task('watch', () => {
    gulp.watch(paths.refresh, (done) => {
        reload();
        done();
    });
    gulp.watch(paths.reinit, () => {
        console.log("Reinitializing framework");
        axios.get(url)
        .then(response => {
            console.log(response.data.trim());
            reload();
        })
        .catch(error => {
            console.log("Error:  Please ensure you have a /healthcheck route set up in /config/router.cfc!");
            console.log("Error:  Once you've done that, please shut down commandbox then try browsersync again.");
        });
    });
});

gulp.task('proxy', () => {
    bs.init({
        proxy: "localhost:80",
        port: 81,
        open: true,
        notify: false
    });
});

gulp.task('default', gulp.parallel('watch', 'proxy'));

1 Ответ

0 голосов
/ 24 апреля 2020

Часы Gulp проходят «готовый» обратный вызов, который необходимо вызвать, чтобы продолжить. Изменение кода на следующее решило проблему.

const gulp = require('gulp');
const axios = require("axios");
const bs = require('browser-sync').create(); 
const { reload } = bs;

const url = "http://127.0.0.1:80/healthcheck?fwreinit=1";

var paths = {
        refresh: [
            "./layouts/**/*.*",
            "./views/**/*.*",
            "./includes/**/*.js",
            "./includes/**/*.css"
        ],
        reinit: [
            "./handlers/**/*.*",
            "./models/**/*.*",
            "./interceptors/**/*.*",
            "./config/**/*.*"
        ]
    }

gulp.task('watch', () => {
    gulp.watch(paths.refresh, (done) => {
        reload();
        done();
    });
    gulp.watch(paths.reinit, (done) => {
        console.log("Reinitializing framework");
        axios.get(url)
        .then(response => {
            console.log(response.data.trim());
            reload();
            done();
        })
        .catch(error => {
            console.log("Error:  Please ensure you have a /healthcheck route set up in /config/router.cfc!");
            console.log("Error:  Once you've done that, please shut down commandbox then try browsersync again.");
        });
    });
});

gulp.task('proxy', () => {
    bs.init({
        proxy: "localhost:80",
        port: 81,
        open: true,
        notify: false
    });
});

gulp.task('default', gulp.parallel('watch', 'proxy'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...