Skip to content

ElJijuna/code-languages

Repository files navigation

code-languages

npm version Pull Request Docs License: MIT TypeScript Dependencies

Structured metadata for programming languages, packaged as a typed, tree-shakeable TypeScript library.

code-languages is useful when you need a small source of truth for language names, slugs, file extensions, release metadata, websites, paradigms, and logos in developer tools, docs sites, learning platforms, or editor-like interfaces.

Features

  • TypeScript-first data model
  • Zero runtime dependencies
  • ESM and CommonJS builds
  • Subpath imports for per-language usage
  • Tree-shakeable exports
  • Works in Node.js and modern bundlers

Installation

npm install code-languages

Usage

Import only the language metadata you need:

import { typescript } from "code-languages/typescript";
import { localizeLanguage } from "code-languages/i18n";

const localized = localizeLanguage(typescript, "en");

console.log(localized.name);
console.log(localized.description);
console.log(typescript.extensions);
console.log(typescript.paradigms);

Import multiple languages:

import { abap } from "code-languages/abap";
import { actionscript } from "code-languages/actionscript";
import { ada } from "code-languages/ada";
import { apex } from "code-languages/apex";
import { asp } from "code-languages/asp";
import { astro } from "code-languages/astro";
import { assembly } from "code-languages/assembly";
import { awk } from "code-languages/awk";
import { bash } from "code-languages/bash";
import { batch } from "code-languages/batch";
import { c } from "code-languages/c";
import { clojure } from "code-languages/clojure";
import { cmake } from "code-languages/cmake";
import { coffeescript } from "code-languages/coffeescript";
import { cobol } from "code-languages/cobol";
import { cpp } from "code-languages/cpp";
import { csharp } from "code-languages/csharp";
import { crystal } from "code-languages/crystal";
import { css } from "code-languages/css";
import { cuda } from "code-languages/cuda";
import { d } from "code-languages/d";
import { dart } from "code-languages/dart";
import { dockerfile } from "code-languages/dockerfile";
import { elixir } from "code-languages/elixir";
import { elm } from "code-languages/elm";
import { erlang } from "code-languages/erlang";
import { fennel } from "code-languages/fennel";
import { fortran } from "code-languages/fortran";
import { fsharp } from "code-languages/fsharp";
import { git } from "code-languages/git";
import { gleam } from "code-languages/gleam";
import { gradle } from "code-languages/gradle";
import { glsl } from "code-languages/glsl";
import { graphql } from "code-languages/graphql";
import { groovy } from "code-languages/groovy";
import { haskell } from "code-languages/haskell";
import { haxe } from "code-languages/haxe";
import { hcl } from "code-languages/hcl";
import { html } from "code-languages/html";
import { ini } from "code-languages/ini";
import { javascript } from "code-languages/javascript";
import { java } from "code-languages/java";
import { julia } from "code-languages/julia";
import { kotlin } from "code-languages/kotlin";
import { less } from "code-languages/less";
import { lisp } from "code-languages/lisp";
import { lua } from "code-languages/lua";
import { makefile } from "code-languages/makefile";
import { matlab } from "code-languages/matlab";
import { markdown } from "code-languages/markdown";
import { meson } from "code-languages/meson";
import { metal } from "code-languages/metal";
import { nginx } from "code-languages/nginx";
import { nim } from "code-languages/nim";
import { nix } from "code-languages/nix";
import { ocaml } from "code-languages/ocaml";
import { objectiveC } from "code-languages/objective-c";
import { pascal } from "code-languages/pascal";
import { perl } from "code-languages/perl";
import { php } from "code-languages/php";
import { powershell } from "code-languages/powershell";
import { protobuf } from "code-languages/protobuf";
import { pug } from "code-languages/pug";
import { python } from "code-languages/python";
import { r } from "code-languages/r";
import { racket } from "code-languages/racket";
import { razor } from "code-languages/razor";
import { ruby } from "code-languages/ruby";
import { scala } from "code-languages/scala";
import { scss } from "code-languages/scss";
import { solidity } from "code-languages/solidity";
import { json } from "code-languages/json";
import { jupyterNotebook } from "code-languages/jupyter-notebook";
import { sql } from "code-languages/sql";
import { svg } from "code-languages/svg";
import { svn } from "code-languages/svn";
import { svelte } from "code-languages/svelte";
import { swift } from "code-languages/swift";
import { tcl } from "code-languages/tcl";
import { toml } from "code-languages/toml";
import { visualBasic } from "code-languages/visual-basic";
import { vue } from "code-languages/vue";
import { webassembly } from "code-languages/webassembly";
import { xaml } from "code-languages/xaml";
import { xml } from "code-languages/xml";
import { yaml } from "code-languages/yaml";
import { zig } from "code-languages/zig";
import { zsh } from "code-languages/zsh";

console.log(abap.version);
console.log(actionscript.extensions);
console.log(ada.version);
console.log(apex.extensions);
console.log(asp.extensions);
console.log(astro.version);
console.log(assembly.extensions);
console.log(awk.version);
console.log(bash.version);
console.log(batch.extensions);
console.log(c.extensions);
console.log(clojure.version);
console.log(cmake.extensions);
console.log(coffeescript.version);
console.log(cpp.i18n.en.name);
console.log(csharp.website);
console.log(crystal.version);
console.log(css.paradigms);
console.log(cuda.version);
console.log(d.version);
console.log(dockerfile.i18n.en.name);
console.log(elm.version);
console.log(erlang.version);
console.log(fennel.extensions);
console.log(fortran.extensions);
console.log(fsharp.version);
console.log(git.extensions);
console.log(gleam.version);
console.log(gradle.extensions);
console.log(glsl.extensions);
console.log(graphql.version);
console.log(groovy.version);
console.log(hcl.extensions);
console.log(haxe.version);
console.log(html.extensions);
console.log(ini.extensions);
console.log(javascript.website);
console.log(java.version);
console.log(jupyterNotebook.extensions);
console.log(julia.version);
console.log(kotlin.version);
console.log(less.extensions);
console.log(lisp.version);
console.log(lua.version);
console.log(makefile.extensions);
console.log(matlab.version);
console.log(markdown.website);
console.log(meson.extensions);
console.log(metal.version);
console.log(nginx.version);
console.log(nim.version);
console.log(nix.version);
console.log(objectiveC.version);
console.log(pascal.version);
console.log(perl.version);
console.log(php.version);
console.log(powershell.extensions);
console.log(protobuf.version);
console.log(pug.version);
console.log(python.publishedDate);
console.log(r.version);
console.log(racket.extensions);
console.log(razor.extensions);
console.log(ruby.website);
console.log(scala.version);
console.log(scss.extensions);
console.log(solidity.version);
console.log(json.i18n.en.description);
console.log(sql.i18n.en.name);
console.log(svg.extensions);
console.log(svn.extensions);
console.log(svelte.version);
console.log(swift.version);
console.log(tcl.extensions);
console.log(toml.version);
console.log(visualBasic.i18n.en.name);
console.log(vue.website);
console.log(webassembly.extensions);
console.log(xaml.extensions);
console.log(xml.extensions);
console.log(yaml.version);
console.log(zig.version);
console.log(zsh.extensions);

Import from the package root when bundle size is not a concern:

import {
  abap,
  actionscript,
  ada,
  apex,
  asp,
  astro,
  assembly,
  awk,
  bash,
  c,
  clojure,
  cmake,
  coffeescript,
  cpp,
  csharp,
  crystal,
  css,
  cuda,
  d,
  detectLanguage,
  detectLanguages,
  dockerfile,
  elixir,
  elm,
  erlang,
  fennel,
  fortran,
  fsharp,
  go,
  gleam,
  glsl,
  graphql,
  groovy,
  haskell,
  haxe,
  hcl,
  html,
  ini,
  java,
  json,
  jupyterNotebook,
  julia,
  kotlin,
  less,
  lisp,
  lua,
  makefile,
  matlab,
  localizeLanguage,
  markdown,
  meson,
  metal,
  nginx,
  nim,
  nix,
  ocaml,
  objectiveC,
  pascal,
  perl,
  php,
  powershell,
  protobuf,
  pug,
  r,
  racket,
  razor,
  ruby,
  rust,
  scala,
  scss,
  solidity,
  sql,
  svg,
  svn,
  svelte,
  swift,
  tcl,
  toml,
  typescript,
  visualBasic,
  vue,
  webassembly,
  xaml,
  xml,
  yaml,
  zig,
  zsh,
} from "code-languages";

console.log(localizeLanguage(abap).description);
console.log(localizeLanguage(actionscript, "es").description);
console.log(localizeLanguage(ada, "es").description);
console.log(localizeLanguage(apex, "es").description);
console.log(localizeLanguage(asp, "es").description);
console.log(localizeLanguage(astro, "es").description);
console.log(localizeLanguage(assembly).description);
console.log(localizeLanguage(awk, "es").description);
console.log(detectLanguage("src/index.ts")?.slug);
console.log(detectLanguages("include/config.h").map((language) => language.slug));
console.log(localizeLanguage(bash, "es").description);
console.log(c.version);
console.log(localizeLanguage(clojure, "es").description);
console.log(localizeLanguage(cmake).description);
console.log(localizeLanguage(coffeescript).name);
console.log(cpp.website);
console.log(localizeLanguage(csharp).description);
console.log(localizeLanguage(crystal, "es").description);
console.log(localizeLanguage(css).name);
console.log(localizeLanguage(cuda, "es").description);
console.log(localizeLanguage(d, "es").description);
console.log(dockerfile.website);
console.log(localizeLanguage(elixir, "es").description);
console.log(localizeLanguage(elm, "es").description);
console.log(localizeLanguage(erlang, "es").description);
console.log(localizeLanguage(fennel, "es").description);
console.log(localizeLanguage(fortran).description);
console.log(localizeLanguage(fsharp, "es").description);
console.log(localizeLanguage(gleam, "es").description);
console.log(localizeLanguage(glsl, "es").description);
console.log(localizeLanguage(graphql, "es").description);
console.log(localizeLanguage(groovy).description);
console.log(localizeLanguage(haskell, "es").description);
console.log(localizeLanguage(haxe, "es").description);
console.log(localizeLanguage(hcl, "es").description);
console.log(localizeLanguage(ini, "es").description);
console.log(localizeLanguage(java).name);
console.log(html.website);
console.log(localizeLanguage(julia, "es").description);
console.log(localizeLanguage(kotlin, "es-PE").description);
console.log(localizeLanguage(less, "es").name);
console.log(localizeLanguage(lisp).description);
console.log(localizeLanguage(lua, "es").description);
console.log(localizeLanguage(makefile).description);
console.log(localizeLanguage(matlab, "es").description);
console.log(markdown.extensions);
console.log(localizeLanguage(meson, "es").description);
console.log(localizeLanguage(metal).description);
console.log(localizeLanguage(nginx, "es").description);
console.log(localizeLanguage(nim, "es").description);
console.log(localizeLanguage(nix, "es").description);
console.log(localizeLanguage(ocaml, "es").description);
console.log(objectiveC.extensions);
console.log(localizeLanguage(pascal, "es").description);
console.log(localizeLanguage(perl).description);
console.log(localizeLanguage(php, "es").description);
console.log(localizeLanguage(powershell).name);
console.log(localizeLanguage(protobuf, "es").description);
console.log(localizeLanguage(pug, "es").description);
console.log(go.logo);
console.log(localizeLanguage(r, "es").description);
console.log(localizeLanguage(racket, "es").description);
console.log(localizeLanguage(razor, "es").description);
console.log(localizeLanguage(ruby, "es").description);
console.log(localizeLanguage(scala, "es").description);
console.log(localizeLanguage(scss).name);
console.log(localizeLanguage(solidity, "es").description);
console.log(json.website);
console.log(sql.extensions);
console.log(localizeLanguage(svg, "es").description);
console.log(localizeLanguage(svn, "es").description);
console.log(localizeLanguage(svelte).name);
console.log(swift.i18n.en.description);
console.log(localizeLanguage(tcl, "es").description);
console.log(localizeLanguage(toml, "es").description);
console.log(localizeLanguage(visualBasic, "es").description);
console.log(localizeLanguage(vue, "es").description);
console.log(localizeLanguage(webassembly).name);
console.log(localizeLanguage(xaml, "es").description);
console.log(localizeLanguage(xml, "es").name);
console.log(yaml.paradigms);
console.log(localizeLanguage(zig, "es").description);
console.log(zsh.version);

API

Every language object satisfies the Language interface:

export type Locale = "en" | "es" | `en-${string}` | `es-${string}` | string;

export interface LanguageContent {
  name: string;
  description: string;
  longDescription: string;
}

export interface Language {
  slug: string;
  publishedDate: string;
  extensions: string[];
  author: string;
  website: string;
  paradigms: string[];
  tooling?: {
    runtimes?: string[];
    packageManagers?: string[];
    ecosystems?: string[];
  };
  version: string;
  logo: string;
  i18n: {
    en: LanguageContent;
    es?: LanguageContent;
  };
}

Use the fluent API when you want one entry point for localization, dynamic loading, and filename detection:

import { api } from "code-languages/api";

const astro = api.language("astro").locale("es-PE").get();
const vue = await api.language("vue").locale("en-US").load();
const detected = api.detect("src/App.vue").locale("es").get();
const ambiguous = await api.detectAll("include/config.h").locale("en").load();

console.log(astro?.resolvedLocale); // "es"
console.log(vue?.slug); // "vue"
console.log(detected?.name); // "Vue"
console.log(ambiguous.map((language) => language.slug)); // ["c", "cpp"]

get() reads from the bundled in-memory catalog. load() uses explicit dynamic imports so bundlers can lazy-load individual language modules when the consumer build supports code splitting.

Use localizeLanguage to read localized display content with English fallback:

import { json } from "code-languages/json";
import { localizeLanguage } from "code-languages/i18n";

const language = localizeLanguage(json, "es-PE");

console.log(language.name);
console.log(language.longDescription);
console.log(language.resolvedLocale); // "es"

localizeLanguage resolves locales in this order:

  1. Exact locale, for example es.
  2. Base language from a regional locale, for example es-PE -> es.
  3. English fallback, for example fr-FR -> en.

Use detectLanguage or detectLanguages to infer languages from filenames:

import { detectLanguage, detectLanguages } from "code-languages/detect";

console.log(detectLanguage("src/index.ts")?.slug); // "typescript"
console.log(detectLanguage("Dockerfile")?.slug); // "dockerfile"
console.log(detectLanguages("include/config.h").map((language) => language.slug)); // ["c", "cpp"]

Supported Languages

Logo Language Slug Extensions Version Import
ABAP logo ABAP abap .abap ABAP Platform 2025 FPS01 code-languages/abap
ActionScript logo ActionScript actionscript .as 3.0 code-languages/actionscript
Ada logo Ada ada .adb, .ads, .ada Ada 2022 code-languages/ada
Apex logo Apex apex .cls, .trigger API 66.0 code-languages/apex
ASP/ASPX logo ASP/ASPX asp .asp, .aspx, .ascx, .ashx, .asmx, .master 4.8.1 code-languages/asp
Astro logo Astro astro .astro 6.3.3 code-languages/astro
Assembly logo Assembly assembly .asm, .s, .S, .inc Architecture-specific code-languages/assembly
awk logo awk awk .awk GNU Awk 5.4.0 code-languages/awk
Bash logo Bash bash .sh, .bash, .bashrc, .bash_profile, .bash_login, .profile 5.3 code-languages/bash
Batch logo Batch batch .bat, .cmd Windows Command Processor code-languages/batch
C logo C c .c, .h C23 code-languages/c
CMake logo CMake cmake CMakeLists.txt, .cmake 4.3.2 code-languages/cmake
Clojure logo Clojure clojure .clj, .cljs, .cljc, .edn, .bb 1.12.5 code-languages/clojure
CoffeeScript logo CoffeeScript coffeescript .coffee, .litcoffee, .cson 2.7.0 code-languages/coffeescript
COBOL logo COBOL cobol .cob, .cbl, .cobol, .cpy ISO/IEC 1989:2023 code-languages/cobol
C++ logo C++ cpp .cpp, .cc, .cxx, .h, .hpp, .hh, .hxx C++23 code-languages/cpp
C# logo C# csharp .cs, .csx 14 code-languages/csharp
Crystal logo Crystal crystal .cr 1.20.1 code-languages/crystal
CSS logo CSS css .css Living Standard code-languages/css
CUDA logo CUDA cuda .cu, .cuh 13.2.1 code-languages/cuda
D logo D d .d, .di 2.112.0 code-languages/d
Dart logo Dart dart .dart 3.11.6 code-languages/dart
Dockerfile logo Dockerfile dockerfile Dockerfile, .dockerfile 1.10 code-languages/dockerfile
Elixir logo Elixir elixir .ex, .exs, .eex, .leex, .heex 1.19.5 code-languages/elixir
Elm logo Elm elm .elm 0.19.1 code-languages/elm
Erlang logo Erlang erlang .erl, .hrl, .app.src, .escript, .xrl, .yrl, rebar.config OTP 29.0 code-languages/erlang
Fennel logo Fennel fennel .fnl 1.6.1 code-languages/fennel
Fortran logo Fortran fortran .f, .for, .ftn, .f90, .f95, .f03, .f08, .f18, .f23 Fortran 2023 code-languages/fortran
F# logo F# fsharp .fs, .fsi, .fsx, .fsscript 10 code-languages/fsharp
Git logo Git git .git, .gitignore, .gitattributes, .gitmodules, .gitkeep 2.54.0 code-languages/git
Gleam logo Gleam gleam .gleam 1.16.0 code-languages/gleam
Go logo Go go .go 1.26.3 code-languages/go
Gradle logo Gradle gradle .gradle, .gradle.kts 9.5.1 code-languages/gradle
GLSL logo GLSL glsl .glsl, .vert, .frag, .geom, .tesc, .tese, .comp, .vs, .fs 4.60 code-languages/glsl
GraphQL logo GraphQL graphql .graphql, .gql, .graphqls September 2025 code-languages/graphql
Groovy logo Groovy groovy .groovy, .gvy, .gy, .gsh 5.0.5 code-languages/groovy
Haskell logo Haskell haskell .hs, .lhs, .hsc, .hs-boot, .hsig, .cabal GHC 9.14.1 code-languages/haskell
Haxe logo Haxe haxe .hx, .hxml 4.3.7 code-languages/haxe
HCL logo HCL hcl .hcl, .tf, .tfvars, .pkr.hcl, .nomad 2.24.0 code-languages/hcl
HTML logo HTML html .html, .htm Living Standard code-languages/html
INI logo INI ini .ini Informal format code-languages/ini
Java logo Java java .java 26 code-languages/java
JavaScript logo JavaScript javascript .js, .mjs, .cjs, .jsx ECMAScript 2025 code-languages/javascript
JSON logo JSON json .json RFC 8259 code-languages/json
Jupyter Notebook logo Jupyter Notebook jupyter-notebook .ipynb nbformat 4.5 code-languages/jupyter-notebook
Julia logo Julia julia .jl 1.12.6 code-languages/julia
Kotlin logo Kotlin kotlin .kt, .kts 2.3.20 code-languages/kotlin
Less logo Less less .less 4.4.1 code-languages/less
Lisp logo Lisp lisp .lisp, .lsp, .cl, .asd ANSI INCITS 226-1994 code-languages/lisp
Lua logo Lua lua .lua, .rockspec 5.5.0 code-languages/lua
Makefile logo Makefile makefile Makefile, makefile, GNUmakefile, .mk, .mak 4.4.1 code-languages/makefile
MATLAB logo MATLAB matlab .m, .mlx R2026a code-languages/matlab
Markdown logo Markdown markdown .md, .markdown, .mdown, .mkd CommonMark 0.31.2 code-languages/markdown
Meson logo Meson meson meson.build, meson_options.txt, meson.options, .wrap 1.11.1 code-languages/meson
Metal logo Metal metal .metal Metal 4 code-languages/metal
nginx logo nginx nginx nginx.conf, .nginx, .conf 1.30.1 code-languages/nginx
Nim logo Nim nim .nim, .nims, .nimble 2.2.10 code-languages/nim
Nix logo Nix nix .nix 2.28 code-languages/nix
OCaml logo OCaml ocaml .ml, .mli, .mll, .mly, .mlt, .eliom, .eliomi 5.6.0 code-languages/ocaml
Objective-C logo Objective-C objective-c .m, .mm 2.0 code-languages/objective-c
Pascal logo Pascal pascal .pas, .pp, .inc, .lpr, .dpr, .dfm 3.2.2 code-languages/pascal
Perl logo Perl perl .pl, .pm, .pod, .t, .psgi 5.42.2 code-languages/perl
PHP logo PHP php .php, .phtml, .php3, .php4, .php5, .phps 8.5.6 code-languages/php
PowerShell logo PowerShell powershell .ps1, .psm1, .psd1, .ps1xml 7.6.1 code-languages/powershell
Protocol Buffers logo Protocol Buffers protobuf .proto 34.1 code-languages/protobuf
Pug logo Pug pug .pug, .jade 3.0.4 code-languages/pug
Python logo Python python .py, .pyw 3.14.4 code-languages/python
R logo R r .r, .R, .rmd, .Rmd, .qmd, .Rprofile 4.6.0 code-languages/r
Racket logo Racket racket .rkt, .rktd, .rktl, .scrbl 9.1 code-languages/racket
Razor logo Razor razor .cshtml, .razor 10.0.8 code-languages/razor
Ruby logo Ruby ruby .rb, .rbw, .rake, .gemspec, Gemfile, Rakefile, config.ru 4.0.4 code-languages/ruby
Rust logo Rust rust .rs 1.95.0 code-languages/rust
Scala logo Scala scala .scala, .sc 3.8.3 code-languages/scala
Sass logo Sass scss .scss, .sass 1.99.0 code-languages/scss
Solidity logo Solidity solidity .sol 0.8.35 code-languages/solidity
SQL logo SQL sql .sql SQL:2023 code-languages/sql
SVG logo SVG svg .svg, .svgz SVG 2 code-languages/svg
SVN logo SVN svn .svn, svnserve.conf 1.14.5 code-languages/svn
Svelte logo Svelte svelte .svelte 5.55.7 code-languages/svelte
Swift logo Swift swift .swift 6.2.2 code-languages/swift
Tcl/Tk logo Tcl/Tk tcl .tcl, .tm, .test 9.0.3 code-languages/tcl
TOML logo TOML toml .toml 1.1.0 code-languages/toml
TypeScript logo TypeScript typescript .ts, .tsx, .mts, .cts 6.0 code-languages/typescript
Visual Basic logo Visual Basic visual-basic .vb 17.13 code-languages/visual-basic
Vue logo Vue vue .vue 3.5.34 code-languages/vue
WebAssembly logo WebAssembly webassembly .wasm, .wat 3.0 code-languages/webassembly
XAML logo XAML xaml .xaml, .baml Platform-specific code-languages/xaml
XML logo XML xml .xml, .xsd, .xsl, .xslt XML 1.0 Fifth Edition code-languages/xml
YAML logo YAML yaml .yaml, .yml 1.2.2 code-languages/yaml
Zig logo Zig zig .zig, .zon 0.16.0 code-languages/zig
zsh logo zsh zsh .zsh, .zshrc, .zprofile, .zlogin, .zlogout, .zshenv 5.9 code-languages/zsh

Development

npm ci
npm run check
npm run build

Common scripts:

Script Purpose
npm run lint Run Biome checks
npm run typecheck Run TypeScript without emitting files
npm test Run Vitest
npm run bench Run manual performance benchmarks
npm run build Build ESM, CommonJS, and declaration files
npm run check Run lint, typecheck, and tests
npm run website:prepare Build the static website data, unit test summary, and benchmark summary
npm run website:serve Preview the static website locally

Website

The static website lives in docs and is generated from the package build. It includes a live filename detector, localized language lookup, the full language catalog, unit test summary, and benchmark summary.

npm run website:prepare
npm run website:serve

Contributing

See CONTRIBUTING.md for setup instructions, field rules, and the process for adding a new language.

License

MIT

About

Typed, zero-dependency metadata for programming languages: names, versions, extensions, logos, i18n, detection helpers, and lazy-loadable API for developer tools, docs, IDEs, and code analysis workflows.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors