Yeomanってどう?
- ソースの自動生成をしてみたい。
- Eclipseだと、ソースの追加とかできるよね。
- 便利そうなんだけど?
- いまいち使われていなくない?
- なんか、軽く使うのは面倒見たい。
- 自分で作る?
Generatorとして欲しい要件をまとめてみる。
- さくっと作りたい。スクリプト(Json定義?)+テンプレート+コピー処理。
- 毎回コンソールでうたないといけないのが邪魔。yo name hoge hogeで作りたい。
でも、その前にYeomanを調べてみよう!
yeoman-environment@1.6.6に基づきます。
generatorの検索の仕方は?
yeoman-environmentをローカルに入れると、このような構成になっている。
/foo/bar
node_modules/yeoman-environment/lib
.package.json
そこで、lib/resolver.jsの人は、以下の順序でディレクトリを検索する。
getNpmPaths
${NVM_PATH}/node_modules
${NODE_PATH}
${__dirname}/../../../../ => /foo(よくわからないが.....)
${__dirname}/../../ => /foo/bar/node_modules(ローカルのところ)
${APPDATA}/npm/node_modules(グローバルのところ:Windows)
/usr/lib/node_modules(グローバル:Unix)
/usr/local/lib/node_modules(グローバル:Unix)
カレントディレクトリまでのすべてのnode_modules
次に、そのディレクトリに、以下のディレクトリを探す。
findGeneratorsIn
generator-*
さらに、以下のファイルを探す。
${dir}/*/index.js
${dir}/generators/*/index.js
${dir}/generators/lib/*/index.js
まとめ
ざっくりまとめると、以下のところにおいておけば、インストールしなくても見つけてくれる。
/foo/bar/node_modules下においてもいいけど、そこだと、npmが動かなくなることがあるのでやめたい。
つまり、上位階層でgenerator-xxxを作って(/foo/generator-*)、yo generatorで作るのが楽である。
でも、yo generatorって、npmのチェックをしに行くのよね......
/foo
bar(←ここで作っている)
generator-*/*/index.js
generator-*/generators/*/index.js
generator-*/generators/lib/*/index.js