Skip to content

Commit

Permalink
feat: support typescript,close #22
Browse files Browse the repository at this point in the history
  • Loading branch information
shisan committed Jan 27, 2022
1 parent e44ce2c commit 1083886
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 14 deletions.
11 changes: 11 additions & 0 deletions packages/core/client.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
declare module 'virtual:svg-icons-register' {
// eslint-disable-next-line
const component: any
export default component
}

declare module 'virtual:svg-icons-names' {
// eslint-disable-next-line
const iconsNames: string[]
export default iconsNames
}
4 changes: 1 addition & 3 deletions packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@
"author": "Vben",
"files": [
"dist",
"register.d.ts",
"client.d.ts",
"module.d.ts"
"client.d.ts"
],
"scripts": {
"dev": "pnpm unbuild --stub",
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/constants.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export const SVG_ICONS_REGISTER_NAME = 'virtual:svg-icons-register'
export const SVG_ICONS_CLIENT = 'virtual:svg-icons-names'
export const SVG_DOM_ID = '__svg__icons__dom__' + new Date().getTime() + '__'
export const SVG_DOM_ID = '__svg__icons__dom__'
export const XMLNS = 'http://www.w3.org/2000/svg'
export const XMLNS_LINK = 'http://www.w3.org/1999/xlink'
6 changes: 4 additions & 2 deletions packages/core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
} from './constants'
import { normalizePath } from 'vite'
import SVGCompiler from 'svg-baker'
import './client'

export * from './typing'

Expand All @@ -30,6 +31,7 @@ export function createSvgIconsPlugin(opt: ViteSvgIconsPlugin): Plugin {
svgoOptions: true,
symbolId: 'icon-[dir]-[name]',
inject: 'body-last' as const,
customDomId: SVG_DOM_ID,
...opt,
}

Expand Down Expand Up @@ -126,13 +128,13 @@ export async function createModuleCode(
if (typeof window !== 'undefined') {
function loadSvg() {
var body = document.body;
var svgDom = document.getElementById('${SVG_DOM_ID}');
var svgDom = document.getElementById('${options.customDomId}');
if(!svgDom) {
svgDom = document.createElementNS('${XMLNS}', 'svg');
svgDom.style.position = 'absolute';
svgDom.style.width = '0';
svgDom.style.height = '0';
svgDom.id = '${SVG_DOM_ID}';
svgDom.id = '${options.customDomId}';
svgDom.setAttribute('xmlns','${XMLNS}');
svgDom.setAttribute('xmlns:link','${XMLNS_LINK}');
}
Expand Down
6 changes: 6 additions & 0 deletions packages/core/src/typing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@ export interface ViteSvgIconsPlugin {
* @default: body-last
*/
inject?: DomInject

/**
* custom dom id
* @default: __svg__icons__dom__
*/
customDomId?: string
}

export interface FileStats {
Expand Down
14 changes: 7 additions & 7 deletions packages/playground/basic/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { createApp } from 'vue';
import App from './App.vue';
import { createApp } from 'vue'
import App from './App.vue'

import 'virtual:svg-icons-register';
import 'virtual:svg-icons-register'

import allKeys from 'virtual:svg-icons-names';
import allKeys from 'virtual:svg-icons-names'

console.log(allKeys);
console.log(allKeys)

const app = createApp(App);
const app = createApp(App)

app.mount('#app');
app.mount('#app')
4 changes: 3 additions & 1 deletion packages/playground/basic/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
"noUnusedParameters": true,
"experimentalDecorators": true,
"lib": ["dom", "esnext"],
"types": ["vite-plugin-svg-icons/client"],
"incremental": true,
"skipLibCheck": true
}
},
"exclude": ["dist"]
}

0 comments on commit 1083886

Please sign in to comment.