我在处理包含@import的文件时使用了cssmin。cssmin能够正确地递归导入本地文件,但是对于指向URL的导入,导入会被内联到CSS中。这使得经过压缩的CSS无效,因为@规则必须在文件开头。有没有人知道解决这个问题的好方法或变通方法?
我在处理包含@import的文件时使用了cssmin。cssmin能够正确地递归导入本地文件,但是对于指向URL的导入,导入会被内联到CSS中。这使得经过压缩的CSS无效,因为@规则必须在文件开头。有没有人知道解决这个问题的好方法或变通方法?
我遇到了和 cssmin 和 @import 相关的问题,但我通过使用 grunt concat 找到了解决方案:
Grunt 任务代码:执行(concat:cssImport)
grunt.initConfig({
concat: {
cssImport: {
options: {
process: function(src, filepath) {
return "@import url(http://fonts.googleapis.com/css?family=Roboto:400,300,900);"+src.replace('@import url(http://fonts.googleapis.com/css?family=Roboto:400,300,900);', '');
}
}
},
files: {
'your_location_file_origin/file.full.min.css': ['your_location_file_destination/file.full.min.css']
}
} )}
我的灵感来自于https://github.com/gruntjs/grunt-contrib-concat#custom-process-function。
processImport: false
选项。'cssmin': {
'options': {
'processImport': false
}
}
我知道这个问题已经存在很长时间,但我发表这篇文章是为了帮助在堆栈溢出上寻找此问题的任何人...只需将您的代码放在 /!..../ 中,就像这样:
/*! * @import url('//fonts.googleapis.com/cssfamily=Roboto:300,400,400i,500,700,700i'); */
它将包含在您的目标min css中,但不要忘记在页面顶部使用远程导入。
:
(保留了 HTML 标签)@import url(custom-fonts.css);
cssmin: {
options: {
root: '<%= yeoman.dist %>/styles/'
}
},
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet">
<link href="http://fonts.googleapis.com/css?family=Roboto:400,300"
rel="stylesheet">
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
<!-- build:css(.) styles/vendor.css -->
<!-- bower:css -->
......
<!-- endbower -->
<!-- endbuild -->
<!-- build:css(.tmp) styles/app.css -->
<link el="stylesheet" href="../bower_components/bootstrap/dist/css/bootstrap.css">
<link rel="stylesheet" href="styles/app.css">