Grunt CSS импорт и пути

У меня есть следующие настройки в Grunt для согласования и минимизации моих проектов CSS

cssmin: {
        options: {

        },
        concat: {
            files: {
                'dist/app.css': [
                    'tmp/*.css',
                    'app/theme/css/vendors/fontello.css',
                    'app/theme/js/vendors/revolution/css/settings.css',
                    'app/theme/css/styles.css',
                    'app/theme/css/media-queries.css',
                    'app/app.css'
                ]
            }
        },
        min: {
            files: [{
                src: 'dist/app.css',
                dest: 'dist/app.css'
            }]
        }
    },

Он отлично работает, за исключением того, что, насколько я могу судить, он удалил следующий оператор импорта

@import url("http://fonts.googleapis.com/css?family=Lato:100,300,400,700,900,100italic,300italic,400italic,700italic,900italic");

И у всех сторонних CSS-файлов есть относительные пути к изображениям, которые не разрешены. Я вижу, что cssmin использует чистый CSS, который должен помочь справиться с этими проблемами, но после нескольких часов поиска и чтения документов я не могу найти четких примеров или пояснений о том, как настроить вышеупомянутое, чтобы решить эту проблему?

2 ответа

Вместо этого я использовал предложение Ze Rubeus о переносе своего оператора импорта шрифта в HTML (немного раздражает, так как это означает изменение стороннего файла CSS). Но я нашел вариант для исправления путей CSS, который

rebase: true,
relativeTo: './'

Моя конфигурация cssmin теперь выглядит

cssmin: {
        options: {
            rebase: true,
            relativeTo: './'
        },
        concat: {
            files: {
                'dist/app.css': [
                    'tmp/*.css',
                    'app/theme/css/vendors/fontello.css',
                    'app/theme/js/vendors/revolution/css/settings.css',
                    'app/theme/css/styles.css',
                    'app/theme/css/media-queries.css',
                    'app/app.css'
                ]
            }
        },
        min: {
            files: [{
                src: 'dist/app.css',
                dest: 'dist/app.css'
            }]
        }
    }

И все работает:)

Вы должны изменить все, что вы импортируете PATH зависеть от этого каталога 'dist/app.css'

И вместо css импорт шрифтов советую использовать HTML link как следующее

<link href='http://fonts.googleapis.com/css?family=Lato:100,300,400,700,900,100italic,300italic,400italic,700italic,900italic' type='text/css'>

убедитесь, что изменили все URL Path's в этих каталогах:

                    'tmp/*.css',
                    'app/theme/css/vendors/fontello.css',
                    'app/theme/js/vendors/revolution/css/settings.css',
                    'app/theme/css/styles.css',
                    'app/theme/css/media-queries.css',
                    'app/app.css'

зависит от этого output'dist/app.css': потому что в gruntjs нет задачи, которая исправляет импорт Path в css файлы для вас!

в отношении вашего кода watch Задача должна быть примерно такой:

   watch: {

       css: {
           files: ['tmp/*.css',
                    'app/theme/css/vendors/fontello.css',
                    'app/theme/js/vendors/revolution/css/settings.css',
                    'app/theme/css/styles.css',
                    'app/theme/css/media-queries.css',
                    'app/app.css'],
           tasks: ['concat','cssmin'],
           options: { spawn: false }
       }
   },

И выполнить эту команду grunt watch в вашем терминале, чтобы автоматически отслеживать изменения в этих файлах и применять эти задачи.

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