yeomanのgeneratorをつくる際のポイントとハマた点

周回遅れでyeomanに手を出した。ネットには古い記事が多く、公式も必要最小限しか書いてないなーという印象。以下の記事はかなり参考にさせてもらった。バグがあったときに内部のエラーしか吐かれないため、慣れるまでは原因がわかりづらい。

既存のgeneratorは古い設計のものが多い

既存のgeneratorをベースにする方法を推奨する記事が多いが、古くからあるものは Base.prototypeを拡張して書かれており、あまりきれいじゃない。web上の入門記事もその形が多い。

比較的新しい方法なんだろうか、公式にあるBaseをextendしてゆく形の方がシンプルで見通しがいい。最初から入っているyeoman-generatorはその形でスケルトンが書かれているので、それを元に書いていくのが楽だと思う。ただし、自分の環境ではnode.jsのバージョンが古く、アップデートしないと動かなかった。
(ちなみに2015年1月現在、windowsでは npm install -g n が通らない問題があり、面倒だがパッケージを落として実行する必要がある模様)

基本の流れ(node.js, yeomanなど入ってる前提)

  1. 対象ディレクトリを作成、移動。ディレクトリ名の形式はgenerator-custom-name
  2. yo generatorでスケルトンを生成
  3. npm linkでnode_modulesにシンボリックリンクを作成
  4. index.js をいじったりモジュールをインストール、package.jsonの設定など
  5. yo custom-nameで使う

使っているプラグインをpackage.jsonにちゃんと書く

プラグインのインストール時に-D の付け忘れなどで index.js で使われているモジュールがpackage.jsonに入っていないとevent.jsのエラーになるので注意。モジュールが足りないとか言ってくれないので知らないと気づきにくい。