LoginSignup
12
12

More than 5 years have passed since last update.

Summon - コードテンプレートジェネレーターで開発環境を効率化する

Last updated at Posted at 2014-08-19

プロジェクトごとにRailsのScaffoldみたいなコードジェネレータがほしいけど、作るのが手間。

なのでできるだけ手間がかからないコードジェネレータジェネレータ書いてみた。

mizchi/summon

まだnpmに登録してないので npm install -g mizchi/summon で入れる。

# 初期化
$ summon init
 > init .generators

# foo ジェネレータを生成
$ summon generator foo
 > generate generator
generate  /Users/mizchi/proj/summon/.generators/foo/generator.coffee
generate  /Users/mizchi/proj/summon/.generators/foo/foo.json.hbs

# foo ジェネレーターを使う
$ summon foo
 > generate foo
generate  /Users/mizchi/proj/summon/app/foo.json

.generators を生成したら最初からgeneratorというジェネレータが入っていて、それを使って他のコマンドを生成する。(使わなくてもいい)

基本的には foo/generator.coffee を呼ぶだけ。API見て察してください。

module.exports = (g, {$1}) ->
  g.gen 'default-generator.coffee.hbs', ".generators/#{$1}/generator.coffee"
  g.gen 'dummy.json.hbs', ".generators/#{$1}/#{$1}.json.hbs"

g.genで使うファイル名と出力先のパスを指定する。ただのスクリプトなのはイテレーションしたり色々したり出来るようにする余地を残すため。

summon foo arg1 arg2 --x 3 --y 4 ってコマンド打ったら引数オブジェクトには {$0: 'foo', $1: 'arg1', $2: 'arg2', x: '3', y: '4'} が入ってるので、それを使ってコードを展開する。

Handlebars以外とか、ヘルパを仕込む仕組みとかまだ考えてない。

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12