UNPKG

@rollup/plugin-image

Version:

Import JPG, PNG, GIF, SVG, and WebP files

76 lines (59 loc) 1.86 kB
import { readFileSync } from 'fs'; import { extname } from 'path'; import { createFilter } from '@rollup/pluginutils'; import svgToMiniDataURI from 'mini-svg-data-uri'; var defaults = { dom: false, exclude: null, include: null }; var mimeTypes = { '.jpg': 'image/jpeg', '.jpeg': 'image/jpeg', '.png': 'image/png', '.gif': 'image/gif', '.svg': 'image/svg+xml', '.webp': 'image/webp' }; var domTemplate = function (ref) { var dataUri = ref.dataUri; return ("\n var img = new Image();\n img.src = \"" + dataUri + "\";\n export default img;\n"); }; var constTemplate = function (ref) { var dataUri = ref.dataUri; return ("\n var img = \"" + dataUri + "\";\n export default img;\n"); }; var getDataUri = function (ref) { var format = ref.format; var isSvg = ref.isSvg; var mime = ref.mime; var source = ref.source; return isSvg ? svgToMiniDataURI(source) : ("data:" + mime + ";" + format + "," + source); }; function image(opts) { if ( opts === void 0 ) opts = {}; var options = Object.assign({}, defaults, opts); var filter = createFilter(options.include, options.exclude); return { name: 'image', load: function load(id) { if (!filter(id)) { return null; } var mime = mimeTypes[extname(id)]; if (!mime) { // not an image return null; } this.addWatchFile(id); var isSvg = mime === mimeTypes['.svg']; var format = isSvg ? 'utf-8' : 'base64'; var source = readFileSync(id, format).replace(/[\r\n]+/gm, ''); var dataUri = getDataUri({ format: format, isSvg: isSvg, mime: mime, source: source }); var code = options.dom ? domTemplate({ dataUri: dataUri }) : constTemplate({ dataUri: dataUri }); return code.trim(); } }; } export { image as default }; //# sourceMappingURL=index.js.map