Skip to content

Commit

Permalink
feat: provide lang sub module for alias (#596)
Browse files Browse the repository at this point in the history
  • Loading branch information
antfu committed Feb 20, 2024
1 parent b9c0fb5 commit b61a689
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 23 deletions.
14 changes: 11 additions & 3 deletions packages/shiki/rollup.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,22 @@ const plugins = [

export default defineConfig([
{
input: entries,
input: [
...entries,
// add language files entries
...fg.sync('src/assets/langs/*.js'),
],
output: {
dir: 'dist',
format: 'esm',
entryFileNames: '[name].mjs',
entryFileNames: (f) => {
if (f.facadeModuleId?.match(/[\\\/]langs[\\\/]/))
return `langs/${f.name}.mjs`
return '[name].mjs'
},
chunkFileNames: (f) => {
if (f.moduleIds.some(i => i.match(/[\\\/]langs[\\\/]/)))
return `langs/${f.name.replace('.tmLanguage', '')}.mjs`
return `langs/${f.name}.mjs`
else if (f.moduleIds.some(i => i.match(/[\\\/]themes[\\\/]/)))
return 'themes/[name].mjs'
return 'chunks/[name].mjs'
Expand Down
6 changes: 1 addition & 5 deletions packages/shiki/scripts/prepare/constants.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1 @@
export const COMMENT_HEAD = `
/**
* Generated by scripts/prepare.ts
*/
`.trim()
export const COMMENT_HEAD = `// Generated by scripts/prepare.ts`
32 changes: 26 additions & 6 deletions packages/shiki/scripts/prepare/langs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,32 @@ ${[
'utf-8',
)

await fs.writeFile(
`./src/assets/langs/${lang.name}.d.ts`,
`${COMMENT_HEAD}
import type { LanguageRegistration } from '@shikijs/core'
for (const alias of json.aliases || []) {
if (isInvalidFilename(alias))
continue
await fs.writeFile(
`./src/assets/langs/${alias}.js`,
`${COMMENT_HEAD}
// ${alias} is an alias of ${lang.name}
export { default } from './${lang.name}'
`,
'utf-8',
)
}

for (const name of [...json.aliases || [], lang.name]) {
if (isInvalidFilename(name))
continue
await fs.writeFile(
`./src/assets/langs/${name}.d.ts`,
`${COMMENT_HEAD}
import type { LanguageRegistration } from '@shikijs/core'
const langs: LanguageRegistration []
export default langs
`,
'utf-8',
)
'utf-8',
)
}
}

async function writeLanguageBundleIndex(
Expand Down Expand Up @@ -146,3 +162,7 @@ export const bundledLanguages = {
],
)
}

function isInvalidFilename(filename: string) {
return !filename.match(/^[a-zA-Z0-9_-]+$/)
}
4 changes: 1 addition & 3 deletions packages/shiki/src/assets/langs-bundle-full.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
/**
* Generated by scripts/prepare.ts
*/
// Generated by scripts/prepare.ts
import type { DynamicImportLanguageRegistration, BundledLanguageInfo } from '@shikijs/core'

export const bundledLanguagesInfo: BundledLanguageInfo[] = [
Expand Down
4 changes: 1 addition & 3 deletions packages/shiki/src/assets/langs-bundle-web.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
/**
* Generated by scripts/prepare.ts
*/
// Generated by scripts/prepare.ts
import type { DynamicImportLanguageRegistration, BundledLanguageInfo } from '@shikijs/core'

export const bundledLanguagesInfo: BundledLanguageInfo[] = [
Expand Down
4 changes: 1 addition & 3 deletions packages/shiki/src/assets/themes.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
/**
* Generated by scripts/prepare.ts
*/
// Generated by scripts/prepare.ts
import type { DynamicImportThemeRegistration, BundledThemeInfo } from '@shikijs/core'

export const bundledThemesInfo: BundledThemeInfo[] = [
Expand Down

0 comments on commit b61a689

Please sign in to comment.