diff --git a/packages/shiki/rollup.config.mjs b/packages/shiki/rollup.config.mjs index 1b62e24b5..11ce5f515 100644 --- a/packages/shiki/rollup.config.mjs +++ b/packages/shiki/rollup.config.mjs @@ -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' diff --git a/packages/shiki/scripts/prepare/constants.ts b/packages/shiki/scripts/prepare/constants.ts index 923257455..7610b3db4 100644 --- a/packages/shiki/scripts/prepare/constants.ts +++ b/packages/shiki/scripts/prepare/constants.ts @@ -1,5 +1 @@ -export const COMMENT_HEAD = ` -/** - * Generated by scripts/prepare.ts - */ -`.trim() +export const COMMENT_HEAD = `// Generated by scripts/prepare.ts` diff --git a/packages/shiki/scripts/prepare/langs.ts b/packages/shiki/scripts/prepare/langs.ts index 74947f698..46689c630 100644 --- a/packages/shiki/scripts/prepare/langs.ts +++ b/packages/shiki/scripts/prepare/langs.ts @@ -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( @@ -146,3 +162,7 @@ export const bundledLanguages = { ], ) } + +function isInvalidFilename(filename: string) { + return !filename.match(/^[a-zA-Z0-9_-]+$/) +} diff --git a/packages/shiki/src/assets/langs-bundle-full.ts b/packages/shiki/src/assets/langs-bundle-full.ts index 79f8f1c1e..2b6f51bdb 100644 --- a/packages/shiki/src/assets/langs-bundle-full.ts +++ b/packages/shiki/src/assets/langs-bundle-full.ts @@ -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[] = [ diff --git a/packages/shiki/src/assets/langs-bundle-web.ts b/packages/shiki/src/assets/langs-bundle-web.ts index d22ac61be..bf98edf96 100644 --- a/packages/shiki/src/assets/langs-bundle-web.ts +++ b/packages/shiki/src/assets/langs-bundle-web.ts @@ -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[] = [ diff --git a/packages/shiki/src/assets/themes.ts b/packages/shiki/src/assets/themes.ts index 97d89681b..2922579e3 100644 --- a/packages/shiki/src/assets/themes.ts +++ b/packages/shiki/src/assets/themes.ts @@ -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[] = [