/** * 文件扩展名 → Monaco Editor 语言名称映射 */ const EXT_LANGUAGE_MAP = { js: 'javascript', jsx: 'javascript', ts: 'typescript', tsx: 'typescript', json: 'json', html: 'html', css: 'css', scss: 'scss', less: 'less', md: 'markdown', py: 'python', java: 'java', xml: 'xml', yaml: 'yaml', yml: 'yaml', sh: 'shell', bash: 'shell', sql: 'sql', rs: 'rust', go: 'go', vue: 'html', txt: 'plaintext' } /** * 根据文件路径推断 Monaco Editor 语言 */ export function getLanguageFromPath(path) { if (!path) return 'plaintext' const ext = path.split('.').pop().toLowerCase() return EXT_LANGUAGE_MAP[ext] || 'plaintext' }