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
}
Я думаю, вы можете видеть, куда это идет. Ваш порт используется, потому что ваша задача наблюдения уже запущена, когда она пытается запустить снова. Вам не нужно регистрировать "часы" в качестве задачи в каждом подразделе часов. Надеюсь, это поможет:)