ES6 の Project Skeleton (6to5 + browserify + power-assert) を作ってみた

かめ板 es6-Kameita

es6-Kameita は ECMAScript 6 で JavaScript ライブラリを開発するためのプロジェクトスケルトン(テンプレート)です。初期設定はブラウザ向けですが、Nodeモジュールにも対応します。

6to5 でトランスパイルされたコードを Browserify でビルドし、mocha + power-assert でテストを実行します。Browserify を採用しているため、初期状態では bower に依存せず npm を活かしています。

経緯

6to5/6to5 がリリースされて以来、しばらく手元で ES6 を使い続けていたので、ぼちぼち開発の構成を固めてしまいたいなと思った次第。

最初は GianlucaGuarini/es6-project-starter-kit を fork して何とかしようと思いましたが、RequireJS でアレしてる時点から今の気分と合わなかったので ahomu/Claylump の構成をスケルトン化しました。

使い方

そんなに機能を入れていない ( gulpfile.js を過度に拡張したくなかった ) ので、必要な機能は自分で足すスタイル。

インストール

git clone https://github.com/ahomu/es6-Kameita.git ./your-project
cd ./your-project
rm -rf .git
npm install

主要コマンド

# ビルド
npm run build

# 開発モード (watch的な)
npm run devel

# テスト実行
npm test

依存ライブラリ

es6-Kameita は次のライブラリ群に依存しています。

gulp を利用していますが、基本的なインターフェースは npm run * にまとめています。 正直、6to5+ browserify+power-assert の組み合わせ方にこなれていない感じなので、奇特な方のPRお待ちしています。

/* index.js */
import runtime from '6to5/runtime';
import polyfill from '6to5/browser-polyfill';

/* part of gulpfile.js */
return browserify(filename, {
        standalone : standaloneName,
        debug      : true,
        noParse    : [require.resolve('6to5/browser-polyfill')]
      })
      .transform(to5ify.configure({
        experimental : false,
        runtime      : true
      }))
      .bundle()

6to5/runtime.js6to5/browser-polyfill.js をいいかんじに混ぜ込んで browserify ビルドできる感じになったのは満足してます。gulpfile.js に 6to5 の experimental と runtime オプションも露出させてあります。

testem 抜きたい気がするけど、karma もウーンって感じです。coverage ツールとの統合も課題。

なぜ 6to5 なのか

Traceur requires quite a bulky runtime (~75KB) and produces quite verbose code. While this can be trimmed down by selectively building the runtime, it's an unneccesary step when a large runtime can be eliminated entirely. 6to5 · Differences

主な比較対象はやはり Traceur になる気がしますが、6to5 · Differences に書いてることが理由になりえるのかと思います。6to5 は出力コードがクリーンで良いですね。

あと最初のほうに Fix typo writable by ahomu · Pull Request #59 · 6to5/6to5 でわずかながら貢献しましたので!

実はTraceurをまともに使ったことはなくて、出力結果みて引いてしまっただけなので何卒免責(・x・)

なぜ power-assert なのか

はい。

よかったら触ってみてください

くだしあ! ES6使ってみよう系はこちらもおすすめ。

ちなみに、かめ板とは 陶芸.com/ろくろ/カメ板・芯出し用具 みたいなものらしいです