gulp-svg-sprite2
const path = require("path");
const gulp = require("gulp");
const svgSprite = require("gulp-svg-sprite");
const glob = require("glob");
function spriteSvg () {
return glob("./src/img/sprites-svg/*", function (er, dirs) {
dirs.forEach(function (dir) {
const directoryName = dir.replace(`${path.dirname(dir)}/`, "");
let options = {
mode: {
css: {
dest: './',
bust: false,
sprite: `./src/img/${directoryName}-svg.svg`,
render: {
scss: {
template: path.join('./src/scss/vendor', 'sprite-svg-mixins.handlebars'),
dest: `./src/scss/vendor/_${directoryName}-svg-mixins.scss`,
}
}
}
},
shape: {
spacing: {
padding: 4
},
},
variables: {
spriteName: `${directoryName}`,
baseName : path.posix.relative('./src/css', path.posix.join(`./src/img`, `${directoryName}-svg`)),
svgToPng : ''
}
}
gulp.src(`./src/img/sprites-svg/${directoryName}/*.svg`)
.pipe(svgSprite(options))
.pipe(gulp.dest('./'))
})
})
}
exports.default = spriteSvg;
1
아직 반복문으로인한 return 시점이 정확도를 해결하지 못했다. 이 문제를 해결하자.
- 일단은 폴더 하나만 있는걸로 가정하자.
- png 스프라이트는 괜찮다. 하지만 svg는 gulp-cached에서 처음 한번 걸러내지 못한다.
스프라이트 이미지를 src로 뱉지말고 최적화까지 다 해서 dist로 내보내자.
src 폴더로 내보내려면 gulp-cached에서 처음 못 걸래는 문제를 해결해야된다.
스프라이트 이미지들 다 dist 폴더로 내보내는걸로만 바꾸면 문제 전부 해결된다.
하지만 반복문일 때 이거 해결하는 방법 없을까… 큭…