Grunt: Livereload не работает

Я продолжаю сталкиваться с этой проблемой каждый раз, когда пытаюсь использовать опцию прямой перезагрузки grunt watch. Независимо от того, какой порт я использую, я получаю сообщение "Неустранимая ошибка: порт xxxx уже используется другим процессом". Я перечислил все используемые порты, и выбор случайного числа, которого нет в списке, не помогает: он заменяет xxxx тем портом, который последний раз использовался в файле gruntfile.

Сам мой gruntfile:

module.exports = function (grunt) {

grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    watch: {

        options: {
            livereload: true
        },

        js: {
            files: ['.dev/**/*.js'],
            tasks: ['concat', 'uglify', 'watch'],
        },
        scss: {
            files: ['./dev/scss/*.scss'],
            tasks: ['sass', 'concat', 'watch'],
            options: {
                reload: true,
                livereload: false,

            }
        },
        html: {
            files: ['./dev/**/*.html', 'watch'],
            tasks: ['copy', 'watch'],
        },
        grunt: {
            files: ['Gruntfile.js'],
            tasks: ['watch'],
        },
    },

    concat: {
        js: {
            src: ['dev/js/script1.js', 'dev/js/script2.js'],
            dest: 'dev/js/script.js',
        },
        css: {
            src: ['./dev/css/nav.css', './dev/css/anim.css', './dev/css/style.css'],
            dest: './dist/css/style.css',
        },
    },

    uglify: {
        build: {
            src: 'dev/js/script.js',
            dest: 'dist/js/script.min.js'
        }
    },

    sass: {                              // Task
        dev: {                            // Target
            files: {                         // Dictionary of files
                './dev/css/style.css': './dev/scss/style.scss',       // 'destination': 'source'
            },
            tasks: ['copy'],
        }
    },

    copy: {
        main: {
            expand: true,
            cwd: './dev/html',
            src: '*.html',
            dest: './dist/html/'
        },
    },
});

// Load the plugin that provides the "uglify" task.
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-sass');


// Default task(s).
grunt.registerTask('default', ['concat', 'uglify', 'sass', 'copy', 'watch']);

};

Я все еще новичок в npm, grunt и т. Д., И у меня тоже была эта проблема с использованием Yeoman. Существует ли какое-либо приложение, которое может автоматически прослушивать каждый порт (я использую Webstorm)? Однако, когда я закрываю его и использую Sublime и терминал, он продолжает говорить, что каждый случайный порт уже используется

1 ответ

Решение

Похоже, вы рекурсивно вызываете часы..

Возьмите эту часть вашего gruntfile, например:

watch: { // hey grunt, you now know of a task called 'watch'
    ....
    html: {
        files: ['./dev/**/*.html', 'watch'], // here are the files to watch
        tasks: ['copy', 'watch'], // and oh, hey, when you run watch, make 
                                  // sure to run watch again, recursively, forever
    }

Я думаю, вы можете видеть, куда это идет. Ваш порт используется, потому что ваша задача наблюдения уже запущена, когда она пытается запустить снова. Вам не нужно регистрировать "часы" в качестве задачи в каждом подразделе часов. Надеюсь, это поможет:)

Другие вопросы по тегам