Skip to content

Commit 98a35b8

Browse files
committed
✨ Make icons importable as strings
1 parent 347800b commit 98a35b8

File tree

4 files changed

+26
-2
lines changed

4 files changed

+26
-2
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"./svelte": "./svelte.js",
2727
"./react": "./react.js",
2828
"./styles": "./scss/index.scss",
29+
"./icons": "./icons.js",
2930
"./config": "./scss/config.scss"
3031
},
3132
"files": [

scripts/build.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import fs from 'fs'
2-
import { buildImports, buildUtilImports } from './buildImports.js'
2+
import { buildImports, buildUtilImports, buildIconImports } from './buildImports.js'
33
import buildTypes from './buildTypes.js'
44

55
const folders = {
@@ -41,10 +41,13 @@ fs.writeFileSync('dist/astro.js', buildImports('astro'))
4141
fs.writeFileSync('dist/svelte.js', buildImports('svelte'))
4242
fs.writeFileSync('dist/react.js', buildImports('tsx'))
4343

44+
fs.writeFileSync('dist/index.js', buildUtilImports())
45+
fs.writeFileSync('dist/icons.js', buildIconImports())
46+
4447
fs.writeFileSync('dist/astro.d.ts', buildTypes('astro'))
4548
fs.writeFileSync('dist/svelte.d.ts', buildTypes('svelte'))
4649
fs.writeFileSync('dist/react.d.ts', buildTypes('react'))
50+
fs.writeFileSync('dist/icons.d.ts', buildTypes('icons'))
4751

48-
fs.writeFileSync('dist/index.js', buildUtilImports())
4952

5053
console.log('✅ Package built')

scripts/buildImports.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,10 @@ export const buildUtilImports = () => {
1515

1616
return utils.map(util => `export * from './utils/${util}'`).join('\n')
1717
}
18+
19+
export const buildIconImports = () => {
20+
const icons = fs.readdirSync('src/icons')
21+
const camelize = string => string.replace(/-./g, x => x[1].toUpperCase()).split('.')[0]
22+
23+
return icons.map(icon => `export { default as ${camelize(icon)} } from './icons/${icon}?raw'`).join('\n')
24+
}

scripts/buildTypes.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,19 @@ const buildTypes = type => {
7979
}
8080
`)
8181
}
82+
83+
if (type === 'icons') {
84+
const icons = fs.readdirSync('src/icons')
85+
const camelize = string => string.replace(/-./g, x => x[1].toUpperCase()).split('.')[0]
86+
87+
return format(`
88+
declare module 'webcoreui/${type}' {
89+
${icons.map(icon => {
90+
return `export const ${camelize(icon)}: string`
91+
}).join('\n\t')}
92+
}
93+
`)
94+
}
8295
}
8396

8497
export default buildTypes

0 commit comments

Comments
 (0)