Skip to content

getLanguageFromExtension

从文件路径获取编程语言类型

语言类型:vue
CodeMirror:vue
前端语言: 是
支持高亮: 是
快速示例:

函数签名

typescript
type CodeLanguage = 
  | 'typescript'
  | 'javascript'
  | 'json'
  | 'css'
  | 'html'
  | 'vue'
  | 'markdown'
  | 'python'
  | 'sql'
  | 'xml'
  | 'yaml'
  | 'java'
  | 'cpp'
  | 'plaintext'

function getLanguageFromExtension(path: string | null | undefined): CodeLanguage
function getCodeMirrorLanguage(path: string | null | undefined): string
function isFrontendLanguage(path: string | null | undefined): boolean
function isHighlightable(path: string | null | undefined): boolean

参数

参数名类型必填说明
pathstring | null | undefined文件路径或文件名

返回值

类型说明
CodeLanguage编程语言类型,无法识别时返回 'plaintext'

支持的扩展名

语言扩展名
TypeScriptts, tsx, mts, cts
JavaScriptjs, jsx, mjs, cjs
JSONjson, jsonc, json5
CSScss, scss, sass, less, styl, stylus
HTMLhtml, htm, hbs, handlebars
Vuevue
Markdownmd, mdx, markdown
Pythonpy, pyw, pyi
SQLsql, mysql, pgsql, plsql
XMLxml, svg, xsd, xsl, xslt, wsdl
YAMLyaml, yml
Javajava
C/C++cpp, cc, cxx, hpp, c, h, hh

使用示例

typescript
import { 
  getLanguageFromExtension, 
  getCodeMirrorLanguage,
  isFrontendLanguage,
  isHighlightable
} from 'zcw-shared/functions/code/getLanguageFromExtension'

// 基本用法
getLanguageFromExtension('/src/main.ts')
// 'typescript'

getLanguageFromExtension('script.js')
// 'javascript'

getLanguageFromExtension('Component.vue')
// 'vue'

// 处理 null/undefined
getLanguageFromExtension(null)
// 'plaintext'

// CodeMirror 语言标识符
getCodeMirrorLanguage('app.tsx')
// 'typescript'

// 便捷判断
isFrontendLanguage('styles.css')     // true
isFrontendLanguage('script.py')      // false
isHighlightable('config.yaml')       // true
isHighlightable('LICENSE')           // false

在代码编辑器中的应用

typescript
import { getLanguageFromExtension } from 'zcw-shared/functions/code/getLanguageFromExtension'

// 配合 Monaco Editor 或 CodeMirror 使用
function setupEditor(filePath: string) {
  const language = getLanguageFromExtension(filePath)
  
  return {
    language,
    theme: 'vs-dark',
    // ...其他配置
  }
}