12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import fs from 'node:fs'
- import spritesmith from 'vite-plugin-spritesmith'
- export default function createSpritesmith(isBuild) {
- const spriteDirnames: string[] = []
- fs.readdirSync('src/assets/sprites').forEach((dirname) => {
- if (fs.statSync(`src/assets/sprites/${dirname}`).isDirectory()) {
- spriteDirnames.push(dirname)
- }
- })
- const plugin: any[] = []
- spriteDirnames.forEach((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
- }
|