vite-plugin-svgo
Version:
Vite plugin to import and compress svg files with SVGO
40 lines (39 loc) • 1.38 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const svgo_1 = require("svgo");
const fs_1 = __importDefault(require("fs"));
const VITE_PLUGIN_NAME = 'vite-plugin-svgo';
const fileRegex = /\.svg$/;
function viteSvgPlugin(svgoOptimizeOptions = {}) {
return {
name: VITE_PLUGIN_NAME,
enforce: 'pre',
async load(id) {
if (fileRegex.test(id)) {
let svgCode;
try {
svgCode = await fs_1.default.promises.readFile(id, 'utf8');
}
catch (exception) {
console.warn(`${id} couldn't be loaded by vite-plugin-svgo: `, exception);
return;
}
try {
const optimizedSvg = (0, svgo_1.optimize)(svgCode, {
path: id,
...svgoOptimizeOptions,
});
return `export default \`${optimizedSvg.data}\`;`;
}
catch (exception) {
console.error(`${id} errored during svg optimization: `, exception);
}
}
},
};
}
exports.default = viteSvgPlugin;
;