feat: emit types for theme components, emit valid esm, downcompile css by default

client-types
Divyansh Singh 8 months ago
parent 8a6d24157c
commit 6dc0ed61e2

@ -59,7 +59,7 @@
"dev:watch": "node scripts/watchAndCopy",
"build": "pnpm build:prepare && pnpm build:client && pnpm build:node",
"build:prepare": "rimraf dist && node scripts/copyShared",
"build:client": "vue-tsc --noEmit -p src/client && tsc -p src/client && node scripts/copyClient",
"build:client": "node scripts/buildClient",
"build:node": "tsc -p src/node --noEmit && rollup --config rollup.config.ts --configPlugin esbuild",
"test": "pnpm --aggregate-output --reporter=append-only '/^test:(unit|e2e|init)$/'",
"test:unit": "vitest run -r __tests__/unit",
@ -162,6 +162,7 @@
"markdown-it-emoji": "^3.0.0",
"markdown-it-mathjax3": "^4.3.2",
"minimist": "^1.2.8",
"mkdist": "^2.2.0",
"nanoid": "^5.0.9",
"ora": "^8.1.1",
"p-map": "^7.0.3",

File diff suppressed because it is too large Load Diff

@ -14,7 +14,6 @@ const require = createRequire(import.meta.url)
const pkg = require('./package.json')
const DEV = !!process.env.DEV
const PROD = !DEV
const external = [
...Object.keys(pkg.dependencies),
@ -80,32 +79,16 @@ dtsNode.resolveId = async function (source, importer) {
const nodeTypes: RollupOptions = {
input: 'src/node/index.ts',
output: {
format: 'esm',
file: 'dist/node/index.d.ts'
},
output: { format: 'esm', file: 'dist/node/index.d.ts' },
external: typesExternal,
plugins: [dtsNode]
}
const clientTypes: RollupOptions = {
input: 'dist/client-types/index.d.ts',
output: {
format: 'esm',
file: 'dist/client/index.d.ts'
},
input: 'dist/client/index.d.ts',
output: { format: 'esm', file: 'dist/client/index.d.ts' },
external: typesExternal,
plugins: [
dts({ respectExternal: true }),
{
name: 'cleanup',
async closeBundle() {
if (PROD) {
await fs.rm('dist/client-types', { recursive: true })
}
}
}
]
plugins: [dts({ respectExternal: true })]
}
export default defineConfig([esmBuild, nodeTypes, clientTypes])

@ -0,0 +1,11 @@
import { mkdist } from 'mkdist'
await mkdist({
srcDir: 'src/client',
distDir: 'dist/client',
format: 'esm',
declaration: true,
addRelativeDeclarationExtensions: true,
ext: 'js',
pattern: '**/*.{vue,ts,css,woff2}'
})

@ -1,11 +0,0 @@
import { copy } from 'fs-extra'
import { globSync } from 'tinyglobby'
function toDest(file) {
return file.replace(/^src\//, 'dist/')
}
globSync(['src/client/**']).forEach((file) => {
if (/(\.ts|tsconfig\.json)$/.test(file)) return
copy(file, toDest(file))
})

37
theme.d.ts vendored

@ -15,22 +15,21 @@ export default theme
export declare const useSidebar: () => DefaultTheme.DocSidebar
export declare const useLocalNav: () => DefaultTheme.DocLocalNav
// TODO: add props for these
export declare const VPBadge: DefineComponent
export declare const VPButton: DefineComponent
export declare const VPDocAsideSponsors: DefineComponent
export declare const VPFeatures: DefineComponent
export declare const VPHomeContent: DefineComponent
export declare const VPHomeFeatures: DefineComponent
export declare const VPHomeHero: DefineComponent
export declare const VPHomeSponsors: DefineComponent
export declare const VPImage: DefineComponent
export declare const VPLink: DefineComponent
export declare const VPNavBarSearch: DefineComponent
export declare const VPSocialLink: DefineComponent
export declare const VPSocialLinks: DefineComponent
export declare const VPSponsors: DefineComponent
export declare const VPTeamMembers: DefineComponent
export declare const VPTeamPage: DefineComponent
export declare const VPTeamPageSection: DefineComponent
export declare const VPTeamPageTitle: DefineComponent
export declare const VPBadge: (typeof import('./dist/client/theme-default/components/VPBadge.vue.js'))['default']
export declare const VPButton: (typeof import('./dist/client/theme-default/components/VPButton.vue.js'))['default']
export declare const VPDocAsideSponsors: (typeof import('./dist/client/theme-default/components/VPDocAsideSponsors.vue.js'))['default']
export declare const VPFeatures: (typeof import('./dist/client/theme-default/components/VPFeatures.vue.js'))['default']
export declare const VPHomeContent: (typeof import('./dist/client/theme-default/components/VPHomeContent.vue.js'))['default']
export declare const VPHomeFeatures: (typeof import('./dist/client/theme-default/components/VPHomeFeatures.vue.js'))['default']
export declare const VPHomeHero: (typeof import('./dist/client/theme-default/components/VPHomeHero.vue.js'))['default']
export declare const VPHomeSponsors: (typeof import('./dist/client/theme-default/components/VPHomeSponsors.vue.js'))['default']
export declare const VPImage: (typeof import('./dist/client/theme-default/components/VPImage.vue.js'))['default']
export declare const VPLink: (typeof import('./dist/client/theme-default/components/VPLink.vue.js'))['default']
export declare const VPNavBarSearch: (typeof import('./dist/client/theme-default/components/VPNavBarSearch.vue.js'))['default']
export declare const VPSocialLink: (typeof import('./dist/client/theme-default/components/VPSocialLink.vue.js'))['default']
export declare const VPSocialLinks: (typeof import('./dist/client/theme-default/components/VPSocialLinks.vue.js'))['default']
export declare const VPSponsors: (typeof import('./dist/client/theme-default/components/VPSponsors.vue.js'))['default']
export declare const VPTeamMembers: (typeof import('./dist/client/theme-default/components/VPTeamMembers.vue.js'))['default']
export declare const VPTeamPage: (typeof import('./dist/client/theme-default/components/VPTeamPage.vue.js'))['default']
export declare const VPTeamPageSection: (typeof import('./dist/client/theme-default/components/VPTeamPageSection.vue.js'))['default']
export declare const VPTeamPageTitle: (typeof import('./dist/client/theme-default/components/VPTeamPageTitle.vue.js'))['default']

Loading…
Cancel
Save