swc - Babelの18倍高速なJavaScriptコンバータ
JavaScriptはそのまま書くのではなく、書いた後に変換して使うケースが増えています。例えばTypeScriptであったり、Babelを使って新しいJavaScriptの仕様を使えるようにする、ReactのJSXを変換するといった具合です。 そんな変換処理は実行速度が命です。遅いと変更するのが面倒になり、更新してからWebブラウザなりで確認するのにも時間がかかってしまいます。そこで紹介したいのがBabelの18倍速いというswcです。
swcの使い方
例えば新しいJavaScriptの仕様であるクラスを使います。
class Foo {
set foo(v) { }
}
class Bar extends Foo {
get bar1() {}
async bar2() {}
}
これを変換します。
$ swc index.js
そうするとES3スタイルのJavaScriptが出力されます。これならばかなり古いWebブラウザでも動くでしょう。
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
swcはJavaScriptからJavaScriptに変換するコンパイラですが、Rustで書かれているのが特徴です。コンパイルもされている分、高速に動作すると言えます。ウォッチなどと組み合わせることで、高速なコンパイル環境が手に入るはずです。
swcはRust製のオープンソース・ソフトウェア(ライセンスはMITとApache 2のデュアルライセンスです)です。
3月4日本文、タイトル修正
swc · Super fast alternative for babel swc-project/swc: Super-fast javascript to javascript compiler written in rust