daofu-gov-pc/vite/plugins/spritesmith.ts

50 lines
1.3 KiB
TypeScript
Raw Permalink Normal View History

2024-01-23 09:11:49 +08:00
import spritesmith from "vite-plugin-spritesmith";
import fs from "fs";
export default function createSpritesmith(isBuild) {
const spriteDirnames: string[] = [];
fs.readdirSync("src/assets/sprites").map((dirname) => {
if (fs.statSync(`src/assets/sprites/${dirname}`).isDirectory()) {
spriteDirnames.push(dirname);
}
});
const plugin: any = [];
spriteDirnames.map((item) => {
plugin.push(
spritesmith({
watch: !isBuild,
src: {
cwd: `./src/assets/sprites/${item}`,
glob: "*.png",
},
target: {
image: `./src/assets/sprites/${item}.png`,
css: [
[
`./src/assets/sprites/_${item}.scss`,
{
format: "handlebars_based_template",
},
],
],
},
apiOptions: {
cssImageRef: `@/assets/sprites/${item}.png`,
spritesheet_info: {
name: item,
format: "handlebars_based_template",
},
},
customTemplates: {
handlebars_based_template: "./scss.template.hbs",
},
spritesmithOptions: {
algorithm: "binary-tree",
padding: 10,
},
})
);
});
return plugin;
}