Grunt с livereload, чтобы замедлить

Вот мой Gruntfile.js

watch: {
            options: { livereload: true },
            compass: {
                files: ['assets/sass/*.{scss,sass}'],
                tasks: ['compass']
            },
            // js: {
            //  files: '<%= jshint.all %>',
            //  tasks: ['jshint', 'uglify']
            // },
            livereload: {
                // files: ['*.html', '*.php', 'assets/stylesheets/**/*.{css}']
                files: ['*.html', '*.php', 'assets/stylesheets/custom.css']
            }
        },

        // compass and scss
        compass: {
            dist: {
                options: {
                config: 'config.rb',
                force: true
                }
            }
        },

и это вывод из grunt watch :

Done, without errors.
... Reload assets/sass/custom.scss ...
... Reload assets/stylesheets/custom.css ...
Completed in 11.033s at Fri Dec 06 2013 14:20:48 GMT+0100 (CET) - Waiting...
OK
>> File "assets/stylesheets/custom.css" changed.
>> File "assets/sass/custom.scss" changed.

Running "compass:dist" (compass) task
overwrite assets/stylesheets/custom.css (0.701s)
identical assets/stylesheets/app.css (3.452s)
Compilation took 4.158s

Done, without errors.
... Reload assets/sass/custom.scss ...
... Reload assets/stylesheets/custom.css ...
Completed in 10.719s at Fri Dec 06 2013 14:21:53 GMT+0100 (CET) - Waiting...

  1. .. Итак, почему livereload занимает так много времени для обновления страницы, 10 секунд для предварительного просмотра любого изменения в моем файле .scss, а также как можно было бы не обновлять страницу полностью, а только вводить изменения .css на странице?
  2. .. еще одна вещь, которую я хотел бы знать, это как избежать этой задержки компиляции в app.css, которая заняла почти 4 секунды, и она даже не изменилась?

Я использую расширение браузера livereload с этой конфигурацией.

Спасибо.


person branquito    schedule 06.12.2013    source источник
comment
Я также заметил проблемы с производительностью, поэтому мне любопытны любые решения здесь.   -  person dmackerman    schedule 12.12.2013


Ответы (2)


1a: чтобы ускорить выполнение задачи наблюдения, попробуйте опцию spawn:false. Это может сделать вещи нестабильными, но стоит попробовать. Если кажется, что все в порядке, действуйте. Это может вызвать проблемы позже, если вы добавите много разных задач в задачу наблюдения. Но вы можете беспокоиться об этом и отключить его потенциально.

1b:

Прежде всего, не включайте livereload для задачи компаса. (у вас это глобально, берите только в css) Из-за этого он также вызовет событие livereload для файла scss. Но поскольку клиент livereload не знает этот файл, он перезагрузит всю страницу. Убедитесь, что единственным зарегистрированным файлом является скомпилированный css.

Во-вторых, задача просмотра также вызовет перезагрузку для ранее измененных файлов. Это известно, но, я думаю, оно исправлено в мастере, но еще не опубликовано.

https://github.com/gruntjs/grunt-contrib-watch/issues/205

2:

Ну, его нужно скомпилировать, чтобы сравнить, тогда он просто сообщает, что он идентичен.

person Martin Hansen    schedule 13.12.2013

Чтобы вводить только изменения .css:

    watch: {
        compass: {
            files: ['assets/sass/*.{scss,sass}'],
            tasks: ['compass']
        },
        livereload: {
            files: ['assets/stylesheets/*.css'],
            options: { livereload: true }
        }
    }

К сожалению, у меня также медленное и похожее время компиляции (это должен быть компас).

person xphong    schedule 18.12.2013
comment
Сейчас я использую комбинацию Guard - Livereload для той же задачи, так как она работает намного быстрее, пока кто-нибудь не найдет лучшее решение с Grunt. Спасибо всем. - person branquito; 20.12.2013