css вендора с изображениями, недоступными после concat и minify

Я использую select2 в угловом проекте (используя йомен). Select2 css находится в следующем каталоге:

bower_components / select2 / select2.css bower_components / select2 / select2.png

CSS использует файл select2.png следующим образом: background-image: url('select2x2.png')

После запуска concat и minify у меня следующая структура:

bower_components / select2 / d204997b.select2x2 styles / 034d1972.vendor.css

Но проблема в том, что часть select2 в venodr css ищет d204997b.select2x2 в каталоге стилей.

Это моя часть моего файла GruntJS:

rev: {
      dist: {
        files: {
          src: [
            '<%= yeoman.dist %>/scripts/{,*/}*.js',
            '<%= yeoman.dist %>/styles/{,*/}*.css',
            '<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
            '<%= yeoman.dist %>/bower_components/select2/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
            '<%= yeoman.dist %>/styles/fonts/*'
          ]
        }
      }
    },
useminPrepare: {
  html: '<%= yeoman.app %>/index.html',
  options: {
    dest: '<%= yeoman.dist %>'
  }
},

usemin: {
  html: ['<%= yeoman.dist %>/{,*/}*.html'],
  css: ['<%= yeoman.dist %>/styles/{,*/}*.css'],
  options: {
    assetsDirs: ['<%= yeoman.dist %>' ,'<%= yeoman.dist %>/images' , '<%= yeoman.dist %>/bower_components/select2']
  }
}

Спасибо

1 ответ

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

Главная задача

/**
 * Replaces image paths in CSS to match ../img. Select2 is the only css file this is needed for so far.
 * Others can be added.
 */
replace: {
    build: {
        src: ['<%= build %>/assets/lib/css/select2.css'],
        overwrite: true,
        replacements: [
            {
                from: /url\('(?!\.)/g,
                to: 'url(\'../img/'
            },
            {
                from: /url\((?!\')/g,
                to: 'url(\'../img/'
            },
            {
                from: /..\/images\//g,
                to: '../img/'
            },
            {
                from: /(png|gif|jpg)(?=\))/g,
                to: '$1\''
            }
        ]
    }
}

Я также скопировал все изображения select2 в папку "img". Эта часть может быть тем, что вы хотите, до тех пор, пока задача "to:" совпадает.

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