LoginSignup
1

More than 5 years have passed since last update.

Yeomanってどう?その1

Last updated at Posted at 2017-01-19

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

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
1