그런 작업을 수행합니다. "grunt-text-replace"를 사용하여 모든 깨진 클래스 참조를 적절한 클래스로 대체하는 사용자 정의 정규 표현식을 통해 축소 된 SVG (svgmin)를 전달할 수 있습니다.
Illustrator에서 레이어 / 객체 이름을 class = "tree" 로 선언하십시오 . Illustrator에서 id = "class ="tree "" 로 내보내집니다 . 아래의 grunt 태스크는 그것을 처리하고 class = "tree"로 만듭니다. 또한 ID 정리를 수행하는 다른 하위 작업을 아래에 붙여 넣습니다 (권장).
replace: {
// ID cleanup: performs a manual ID cleanup as Illustrator exports a mess
illustrator: {
src: ['assets/svg/optimised/*.svg'],
overwrite: true,
replacements: [{
// Remove escaped underscore character
from: '_x5F_',
to: '_'
}, {
// Replace class names with proper classes
//class_x3D__x22_tank-option_x22__2_
from: /id\=\"class_x3D__x22_(.+?)_x22_(.*?)\"/gi,
to: function(matchedWord, index, fullText, regexMatches) {
return 'class="'+ regexMatches[0].toLowerCase()+'"';
}
}, {
// Lowercase all ids
from: /id\=\"(.+?)\"/gi,
to: function(matchedWord, index, fullText, regexMatches) {
return 'id="'+ regexMatches[0].toLowerCase()+'"';
}
}, {
// Lowercase all id references to match the previous replace rule
from: /url\(\#(.+?)\)/gi,
to: function(matchedWord, index, fullText, regexMatches) {
return 'url(#'+ regexMatches[0].toLowerCase() +')';
}
}, {
// Lowercase all id href to match the previous replace rule
from: /href\=\"\#(.+?)\"/gi,
to: function(matchedWord, index, fullText, regexMatches) {
return 'href="#'+ regexMatches[0].toLowerCase() +'"';
}
}, {
// Remove all font references as we will use CSS for this
from: /font\-family\=\"(.+?)\"/gi,
to: function(matchedWord, index, fullText, regexMatches) {
return '';
}
}]
}
}
그런 다음 Gruntfile 내에서이 작업을 다음과 같이 호출 할 수 있습니다.
grunt.registerTask('svgclean', [
'replace:illustrator'
]);