Skip to content

Commit

Permalink
feat(preset-icons): load collections (#1723)
Browse files Browse the repository at this point in the history
  • Loading branch information
zyyv committed Oct 10, 2022
1 parent 872d7ee commit 477ce2b
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 10 deletions.
1 change: 1 addition & 0 deletions .eslintignore
Expand Up @@ -4,3 +4,4 @@ node_modules
interactive/guides/vendor/*.md
interactive/data/guides.ts
defaultConfig.ts
packages/preset-icons/src/collections.json
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -15,6 +15,7 @@ node_modules
packages/runtime/*.global.js
packages/unocss/README.md
packages/vscode/LICENSE
packages/preset-icons/src/collections.json
result.json
interactive/guides/vendor/*.md
interactive/data/guides.ts
Expand Down
2 changes: 2 additions & 0 deletions package.json
Expand Up @@ -5,6 +5,7 @@
"private": true,
"packageManager": "pnpm@7.11.0",
"scripts": {
"postinstall": "esno scripts/icon-collections.ts",
"bench": "npm -C bench run bench",
"build": "rimraf packages/*/dist && esno scripts/copy-files.ts && pnpm -r --filter=./packages/* run build && pnpm -r run build-post",
"dev": "nr stub",
Expand Down Expand Up @@ -35,6 +36,7 @@
"@iconify-json/teenyicons": "^1.1.3",
"@iconify-json/twemoji": "^1.1.5",
"@iconify-json/uim": "^1.1.2",
"@iconify/json": "^2.1.119",
"@types/codemirror": "^5.60.5",
"@types/connect": "^3.4.35",
"@types/css-tree": "^1.0.7",
Expand Down
4 changes: 1 addition & 3 deletions packages/preset-icons/src/cdn.ts
Expand Up @@ -3,9 +3,7 @@ import { loadIcon } from '@iconify/utils/lib/loader/loader'
import { searchForIcon } from '@iconify/utils/lib/loader/modern'
import type { UniversalIconLoader } from '@iconify/utils/lib/loader/types'
import { $fetch } from 'ohmyfetch'

// TODO: load dynamically from somewhere
const supportedCollection = ['material-symbols', 'ic', 'mdi', 'ph', 'ri', 'carbon', 'bi', 'tabler', 'ion', 'uil', 'teenyicons', 'clarity', 'iconoir', 'majesticons', 'zondicons', 'ant-design', 'bx', 'bxs', 'gg', 'cil', 'lucide', 'pixelarticons', 'system-uicons', 'ci', 'akar-icons', 'typcn', 'radix-icons', 'ep', 'mdi-light', 'fe', 'eos-icons', 'line-md', 'charm', 'prime', 'heroicons', 'heroicons-outline', 'heroicons-solid', 'uiw', 'uim', 'uit', 'uis', 'maki', 'gridicons', 'mi', 'quill', 'gala', 'fluent', 'icon-park-outline', 'icon-park', 'vscode-icons', 'jam', 'codicon', 'pepicons', 'bytesize', 'ei', 'fa6-solid', 'fa6-regular', 'octicon', 'ooui', 'nimbus', 'openmoji', 'twemoji', 'noto', 'noto-v1', 'emojione', 'emojione-monotone', 'emojione-v1', 'fxemoji', 'bxl', 'logos', 'simple-icons', 'cib', 'fa6-brands', 'arcticons', 'file-icons', 'brandico', 'entypo-social', 'cryptocurrency', 'flag', 'circle-flags', 'flagpack', 'cif', 'gis', 'map', 'geo', 'fad', 'academicons', 'wi', 'healthicons', 'medical-icon', 'la', 'eva', 'dashicons', 'flat-color-icons', 'entypo', 'foundation', 'raphael', 'icons8', 'iwwa', 'fa-solid', 'fa-regular', 'fa-brands', 'fa', 'fontisto', 'icomoon-free', 'ps', 'subway', 'oi', 'wpf', 'simple-line-icons', 'et', 'el', 'vaadin', 'grommet-icons', 'whh', 'si-glyph', 'zmdi', 'ls', 'bpmn', 'flat-ui', 'vs', 'topcoat', 'il', 'websymbol', 'fontelico', 'feather', 'mono-icons']
import supportedCollection from './collections.json'

export function createCDNLoader(cdnBase: string): UniversalIconLoader {
const cache = new Map<string, Promise<IconifyJSON>>()
Expand Down
24 changes: 17 additions & 7 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions scripts/icon-collections.ts
@@ -0,0 +1,21 @@
import path from 'path'
import { fileURLToPath } from 'url'
import fs from 'fs-extra'

const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
const out = path.resolve(__dirname, '../packages/preset-icons')

async function prepareJSON() {
const dir = path.resolve(__dirname, '../node_modules/@iconify/json/json')
await fs.ensureDir(dir)

const collections = (await fs.readdir(dir)).map(file => file.replace(/\.json$/, ''))
await fs.writeJSON(path.resolve(out, 'src/collections.json'), collections)
}

async function prepare() {
await prepareJSON()
}

prepare()

0 comments on commit 477ce2b

Please sign in to comment.