| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import { defineConfig } from "vite"
- import solidPlugin from "vite-plugin-solid"
- import { iconsSpritesheet } from "vite-plugin-icons-spritesheet"
- import fs from "fs"
- export default defineConfig({
- plugins: [
- solidPlugin(),
- providerIconsPlugin(),
- iconsSpritesheet([
- {
- withTypes: true,
- inputDir: "src/assets/icons/file-types",
- outputDir: "src/components/file-icons",
- formatter: "prettier",
- },
- {
- withTypes: true,
- inputDir: "src/assets/icons/provider",
- outputDir: "src/components/provider-icons",
- formatter: "prettier",
- iconNameTransformer: (iconName) => iconName,
- },
- ]),
- ],
- server: { port: 3001 },
- build: {
- target: "esnext",
- },
- worker: {
- format: "es",
- },
- })
- function providerIconsPlugin() {
- return {
- name: "provider-icons-plugin",
- configureServer() {
- fetchProviderIcons()
- },
- buildStart() {
- fetchProviderIcons()
- },
- }
- }
- async function fetchProviderIcons() {
- const providers = await fetch("https://models.dev/api.json")
- .then((res) => res.json())
- .then((json) => Object.keys(json))
- await Promise.all(
- providers.map((provider) =>
- fetch(`https://models.dev/logos/${provider}.svg`)
- .then((res) => res.text())
- .then((svg) => fs.writeFileSync(`./src/assets/icons/provider/${provider}.svg`, svg)),
- ),
- )
- }
|