Задание Gulp приводит к зависанию процесса Node - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь запустить задачу 'rundev' в следующем коде gulp, но он продолжает вызывать зависание моего процесса Node / Gulp.Я не могу отменить их, не перезагружая компьютер, поэтому отследить проблему оказалось трудно.

const gulp = require("gulp");
const concat = require("gulp-concat");
const uglify = require("gulp-uglify");
const uglifycss = require("gulp-uglifycss");
const del = require("del");
const sass = require('gulp-sass');
const streamqueue = require('streamqueue');
const gzip = require('gulp-gzip');
const compression = require('compression');
const browserSync = require("browser-sync").create();

const scripts = require("./scripts");
const styles = require("./styles");

var devMode = false;

gulp.task("html", function() {
    gulp.src("./src/html/**/*.html")
        .pipe(gulp.dest("./dist/"))
        /*.pipe(gzip({extension: 'gz'}))
        .pipe(gulp.dest("./dist/"))*/
        .pipe(browserSync.reload({
            stream: true
        }));
});

gulp.task("css", function() {
    var cssRaw = gulp.src(styles["css"])
        .pipe(uglifycss());
    var cssFromSass = gulp.src(styles["scss"])
        .pipe(sass({outputStyle: 'compressed'}));

    return streamqueue({objectMode: true},
                       cssFromSass, 
                       cssRaw)
        .pipe(concat("allStyles.min.css"))
        .pipe(gulp.dest("./dist/css"))
        /*.pipe(gzip({extension: 'gz'}))
        .pipe(gulp.dest("./dist/css"))*/
        .pipe(browserSync.reload({
            stream: true
        }));
});

gulp.task("js", function() {
    var jsMin = gulp.src(scripts["min"]);

    var jsOther = gulp.src(scripts["other"])
        .pipe(uglify());

    return streamqueue({objectMode: true},
                       jsMin, 
                       jsOther)
        .pipe(concat("allScripts.min.js"))
        .pipe(gulp.dest("./dist/js"))
        /*.pipe(gzip({extension: 'gz'}))
        .pipe(gulp.dest("./dist/js"))*/
        .pipe(browserSync.reload({
            stream: true
        }));
});

gulp.task("fonts", function() {
    gulp.src(["./src/fonts/**/*.eot", 
              "./src/fonts/**/*.svg", 
              "./src/fonts/**/*.ttf", 
              "./src/fonts/**/*.woff", 
              "./src/fonts/**/*.woff2"])
    .pipe(gulp.dest("./dist/fonts"))
    .pipe(browserSync.reload({
        stream: true
    }));
});

gulp.task("images", function() {
    gulp.src(["./src/images/**/*.*"])
    .pipe(gulp.dest("./dist/images"))
    .pipe(browserSync.reload({
        stream: true
    }));
});

gulp.task("sounds", function() {
    gulp.src(["./src/sounds/**/*.*"])
    .pipe(gulp.dest("./dist/sounds"))
    .pipe(browserSync.reload({
        stream: true
    }));
});

gulp.task("clean", function() {
    return del('./dist/**', {read: false});
});

gulp.task("build", ['clean'], function() {
    gulp.start(["css", "js", "html", "fonts", "images", "sounds"]);
});


gulp.task("browser-sync", function() {
    browserSync.init(null, {
        open: false,
        server: {
            baseDir: "dist",
            middleware: compression()
        }/*,
        httpModule: 'http2',
        https: true*/
    });
});

gulp.task("rundev", function() {
    devMode = true;
    gulp.start(["build", "browser-sync"]);
    gulp.watch(["./src/css/**/*.css", "./src/css/**/*.scss"], ["css"]);
    gulp.watch(["./src/js/**/*.js"], ["js"]);
    gulp.watch(["./src/html/**/*.html"], ["html"]);
    gulp.watch(["./src/fonts/**/*.*"], ["fonts"]);
});

Я недавно поднял этот проект после долгого перерыва и с тех пор не трогал кодУ меня никогда не было этой проблемы раньше.

У меня есть эта проблема, когда я пытаюсь запустить 'gulp rundev' в моем окне Git Bash.Кажется, что он завершается без ошибок, но на самом деле никогда не обслуживает файлы, и я не могу использовать окно Git Bash или даже закрыть его впоследствии (ни одна из этих работ: нажатие выхода, Alt + F4 или завершение процесса в диспетчере задач).Единственный способ избавиться от него - перезагрузить компьютер.Я использую Windows 10, Node v8.9.4, Gulp v3.9.1, Brackets и Git Bash в качестве среды разработки на случай, если это поможет.

Вот копия вывода:

MyName@MyComputer MINGW64 ~
$ cd Documents/GitHub/PoeFilterEditor

MyName@MyComputer MINGW64 ~/Documents/GitHub/PoeFilterEditor (Development)
$ gulp rundev
[12:11:27] Using gulpfile ~\Documents\GitHub\PoeFilterEditor\gulpfile.js
[12:11:27] Starting 'rundev'...
[12:11:27] Starting 'clean'...
[12:11:27] Starting 'browser-sync'...
[12:11:27] Finished 'browser-sync' after 114 ms
[12:11:28] Finished 'rundev' after 816 ms
[Browsersync] Access URLs:
 --------------------------------------
       Local: http://localhost:3000
    External: http://192.168.1.142:3000
 --------------------------------------
          UI: http://localhost:3001
 UI External: http://192.168.1.142:3001
 --------------------------------------
[Browsersync] Serving files from: dist

Я помню, что получал больше строк «Начальная» и «Завершенная» в выходных данных для других задач, которые вызываются «rundev», но в остальном выходные данные выглядят нормально.

Поскольку «чистая» задача никогда не отображается как «Завершенная», я предполагаю, что проблема как-то связана с этим, и мое исследование, похоже, показывает, что проблема связана с разрешениями или блокировкой файлов при попыткеоперировать им.С этой целью я попытался возиться с devMode, закрыв все программы, кроме Git Bash, для вызова задачи и убедившись, что все работает с правами администратора, но всегда зависает.

Янемного нового для Node и Gulp, так что может быть что-то явно очевидное, о чем я даже не знаю, о чем спрашивать, так что, надеюсь, кто-то здесь может помочь мне узнать мой путь через это.

...