@clojurewasm/kiso
v0.1.2
Published
ClojureScript-to-JavaScript compiler in TypeScript
Downloads
275
Maintainers
Readme
@clojurewasm/kiso
ClojureScript-to-JavaScript compiler written in TypeScript. Zero dependencies.
Kiso (基礎) — foundation in Japanese.
Features
- Full ClojureScript — reader, analyzer, codegen for the complete language
- Zero dependencies — pure TypeScript, nothing to install beyond this package
- Vite plugin — compile
.cljsfiles with HMR and source maps - Tree-shakeable runtime — persistent data structures, only import what you use
- ~146 KB package size
- 330 vars in
cljs.core(100% of target coverage)
Install
npm install @clojurewasm/kisoQuick Start
With Vite
npm install @clojurewasm/kiso @clojurewasm/su -D vite// vite.config.js
import { cljs } from '@clojurewasm/kiso/vite';
export default { plugins: [cljs()] };;; src/main.cljs
(ns my.app)
(defn greet [name] (str "Hello, " name "!"))
(js/console.log (greet "World"))npx viteCompiler API
import { compile } from '@clojurewasm/kiso/compiler';
const { code } = compile('(defn add [a b] (+ a b))');CLI
npx kiso compile src/ --out-dir dist/ --source-mapWhat Compiles to What?
(defn greet [name] ;; → export let greet = function greet(name) {
(str "Hello, " name "!")) ;; return str("Hello, ", name, "!"); };
(.toUpperCase "hello") ;; → "hello".toUpperCase()
(.-length "hello") ;; → "hello".length
(js/console.log "hi") ;; → console.log("hi")
[1 2 3] ;; → vector(1, 2, 3)
{:a 1} ;; → hashMap(keyword("a"), 1)Exports
| Subpath | Description |
|--------------|--------------------------------|
| . | CompileError, version |
| ./compiler | compile, read, analyze |
| ./vite | Vite plugin (cljs()) |
| ./runtime | Persistent data structures |
| ./codegen | Codegen hooks for libraries |
