Использование Grunt.js для динамического просмотра и последующей компиляции каталога файлов SASS в один файл CSS

Я новичок в Grunt.js, но я начинаю понимать это. Главное, что я хотел бы сделать с этим, я, кажется, не могу прибить.

Моя цель здесь - указать grunt на каталог и заставить его просматривать все соответствующие файлы, а после изменений скомпилировать их в новый отдельный файл CSS.

Вот мой текущий gruntfile:

module.exports = function(grunt) {
    // Project configuration.
    grunt.initConfig({
        // CONFIG =========================/
        pkg: grunt.file.readJSON('package.json'),
        sass: {
            dist: {
                files: {
                    'assets/css/style.css' : 'assets/css/sass/*.scss'
                }
            }
        },
        watch: {
            css: {
                files: 'assets/css/sass/*.scss',
                tasks: ['sass']
            }
        }
    });
    // DEPENDENT PLUGINS =========================/
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-sass');

    // TASKS =====================================/
    grunt.registerTask('default', ['watch']);
};

До сих пор я использовал grunt-contrib-watch и grunt-contrib-sass. Я пробовал компас, а также импорт каталогов, но я не мог заставить ни одного из них делать то, что я пытаюсь сделать.

В конце концов, я на самом деле просто пытаюсь избежать написания файла импорта, потому что порядок исходников не будет иметь значения для того, как я пишу свой SASS, и потому что я действительно хотел бы знать, как чтобы это произошло.

1 ответ

Я не уверен, что можно сделать именно то, что вы хотите, просто используя Sass и Grunt-Contrib-Sass, но вы можете добиться чего-то похожего, используя Sass-Globbing, плагин SASS, который позволяет импортировать целые каталоги. Чтобы использовать плагин, вы должны использовать require вариант в Grunt-Contrib-Sass, и вы бы хотели, чтобы он нацелился на основной styles.scss файл, который может выглядеть примерно так:

@import "vendor/*";
@import "modules/*";
@import "partials/*";

И тогда в вашем файле будет что-то вроде:

sass: {
    dist: {
        options: {
            require: 'sass-globbing'
        },
        files: {
            'assets/css/style.css' : 'assets/css/sass/style.scss'
        }
    }
}
Другие вопросы по тегам