1

cssmin grunt 插件grunt-contrib-cssmin修剪 css sourcemap 源 url 中的前导斜杠,从而使 css 映射不正确。同时,在手动编辑 sourcemap 文件(在每个源 url 中添加前导斜杠)之后,一切似乎都正确映射了。原始源映射文件取自原始 css(未缩小)中的注释,由其他 grunt 插件正确生成。

我的文件结构:

web (resource root)
├─css
│ └─..(css files)
└─less
  └─..(less files)

原始(未缩小的)css 的源图——源 url 是正确的。分别由grunt-contrib-lessgrunt-autoprefixer 生成

{"version":3,"sources":["/less/base/normalize.less","/less/base/boilerplate.less"...

缩小 css 的源图 - 源文件的前导斜杠消失了。由grunt-contrib-cssmin生成:

{"version":3,"sources":["less/base/normalize.less","less/base/boilerplate.less"...

我的gruntfile.js的一部分:

module.exports = function(grunt) {

  grunt.initConfig({
    cssmin: {
      options: {
        shorthandCompacting: false,
        sourceMap: true,
        roundingPrecision: -1
      },
      target: {
        files: {
          'web/css/style.min.css': 'web/css/style.css'
        }
      }
    }
  });
};
4

1 回答 1

1

grunt-string-replace现在我用插件解决了这个问题。我配置了我的gruntfile.js,以便它在源映射中的源文件中添加前导斜杠:

module.exports = function(grunt) {

  grunt.initConfig({
    'string-replace': {
      dist: {
        files: {
          'web/css/style.min.css.map': 'web/css/style.min.css.map'
        },
        options: {
          replacements: [{
            pattern: /"([^"])*(less\/)/g,
            replacement: '"/less/'
          }]
        }
      }
    }

    // other code

  });
};

好吧,这是一个 hack,因为它需要额外的 grunt 插件。但它解决了问题。

于 2015-06-03T16:09:21.477 回答