Nano Hash - криптовалюты, майнинг, программирование

Как мне запускать разные подзадачи sass в зависимости от того, какие просматриваемые файлы изменились?

Есть ли способ просматривать разные наборы файлов и запускать разные задачи в зависимости от того, какой набор изменился?

Причина, по которой я спрашиваю, заключается в том, что я работаю с несколькими отдельными сайтами для разных стран (Великобритания, США, Франция, Германия). Мой основной sass находится в папке для Великобритании, но есть отдельные папки для французского, немецкого и американского языков с переопределением sass для основного css.

Мой файл grunt выглядит так:

module.exports = function(grunt) {

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        watch: {
            files: ['../style/v4/sass/**/*.scss', '../../US/style/v4/sass/**/*.scss', '../../France/style/v4/sass/**/*.scss', '../../Germany/style/v4/sass/**/*.scss'],
            tasks: ['sass:uk'],
            options: {
                spawn: false
            },
        },
        sass: {
            uk: {
                options: {
                    style: 'compressed',
                    sourcemap: true,
                    compass: true
                },
                files: {'../style/v4/css/screen.css': '../style/v4/sass/screen.scss'}
            },
            us: {
                options: {
                    style: 'compressed',
                    sourcemap: true,
                    compass: true
                },
                files: {'../../US/style/v4/css/screen.css': '../../US/style/v4/sass/screen.scss'}
            },
            fr: {
                options: {
                    style: 'compressed',
                    sourcemap: true,
                    compass: true
                },
                files: {'../../France/style/v4/css/screen.css': '../../France/style/v4/sass/screen.scss'}
            },
            de: {
                options: {
                    style: 'compressed',
                    sourcemap: true,
                    compass: true
                },
                files: {'../../Germany/style/v4/css/screen.css': '../../Germany/style/v4/sass/screen.scss'}
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-sass');

    grunt.registerTask('default', ['watch']);

};

Итак, как вы можете видеть, в тот момент, когда любой из основных файлов Великобритании или файлов Франции, Германии, США изменяется, они просто запускают задачу компиляции sass:uk.

Что я хочу, так это то, что если файлы uk изменятся, то запустите все подзадачи sass для компиляции scss. Если файлы scss для Франции изменяются, запустите только задачу sass:fr, если изменяются файлы scss для США, запустите только задачу sass:us и так далее.

Как бы я структурировал свой gruntfile для достижения этой цели?


Ответы:


1

На всякий случай, если у кого-то возникла такая же проблема, я решил ее, настроив отдельные задачи просмотра для разных стран. Довольно очевидно на самом деле:

module.exports = function(grunt) {

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        watch: {
            uk: {
                files: ['../style/v4/sass/**/*.scss'],
                tasks: ['sass'],
                options: {
                    spawn: false
                }
            },
            us: {
                files: ['../../US/style/v4/sass/**/*.scss'],
                tasks: ['sass:us'],
                options: {
                    spawn: false
                }
            },
            fr: {
                files: ['../../France/style/v4/sass/**/*.scss'],
                tasks: ['sass:fr'],
                options: {
                    spawn: false
                }
            },
            de: {
                files: ['../../Germany/style/v4/sass/**/*.scss'],
                tasks: ['sass:de'],
                options: {
                    spawn: false
                }
            }
        },
        sass: {
            uk: {
                options: {
                    style: 'compressed',
                    sourcemap: true,
                    compass: true
                },
                files: {'../style/v4/css/screen.css': '../style/v4/sass/screen.scss'}
            },
            us: {
                options: {
                    style: 'compressed',
                    sourcemap: true,
                    compass: true
                },
                files: {'../../US/style/v4/css/screen.css': '../../US/style/v4/sass/screen.scss'}
            },
            fr: {
                options: {
                    style: 'compressed',
                    sourcemap: true,
                    compass: true
                },
                files: {'../../France/style/v4/css/screen.css': '../../France/style/v4/sass/screen.scss'}
            },
            de: {
                options: {
                    style: 'compressed',
                    sourcemap: true,
                    compass: true
                },
                files: {'../../Germany/style/v4/css/screen.css': '../../Germany/style/v4/sass/screen.scss'}
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-sass');

    grunt.registerTask('default', ['watch']);

};
16.07.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..