Runner in the High

技術のことをかくこころみ

Yeomanに代わるNode.jsのスキャフォルディングツール4選

 ハッカソンや個人開発でよく使う自分でこしらえたアプリケーションのスケルトン・コードをGithubに置いて、それを気軽にスキャフォルディングしたい。こんな欲求はだれしもあると思う。スキャフォルディング・ツールの王道といえばYeomanだが、ちょっとYeomanは...という人は少なくない。ということで、今回の記事では、Yeomanの代替になるような、Node.js製のスキャフォルディング・ツールを紹介しよう。

khaos

f:id:IzumiSy:20171012230404p:plain:w500

GitHub - segmentio/khaos: A super-simple way to scaffold new projects.

  • segment.ioが作っていたシンプルなGithubレポジトリベースのスキャフォルディングツール
  • 機能が小さく纏まっており、マスタッシュ記法をサポートするスキャフォルディングができる
  • テンプレート中のマスタッシュから、CLIが勝手に入力項目を指示してくれるので、設定ファイルなどが不要。
  • ほぼメンテされてないっぽいのが気になる

slush

f:id:IzumiSy:20171012230712p:plain:w150

GitHub - slushjs/slush: The streaming scaffolding system - Gulp as a replacement for Yeoman

  • gulpを内部で使っているYeomanの代替を目指した大型スキャフォルディングツール
  • http://slushjs.github.io/generatorsに使えるテンプレートがリスティングされている
  • テンプレートになるslush-xxxというnpmをグローバルにインストールしないといけないのがちょっとイヤ
  • プロジェクト生成時に新しいディレクトリを作ってくれないという罠がある(これはいいのか?)
  • 使い勝手は(おそらく)Yeomanと近い。

pollinate

f:id:IzumiSy:20171012231207p:plain:w400

GitHub - howardroark/pollinate: Template your base files and generate new projects from Git(Hub).

  • この中でもわりとイチオシのGithubレポジトリベースのスキャフォルディングツール
  • 機能的にはsegment.ioのkhaosと近いが、こちらのほうが高機能
  • template.jsonというファイルをテンプレートのレポジトリに配置することで、スキャフォルディング時に無視するファイルや、ファイルのリネームなどができる
  • シンプルながら、汎用性が高くてよい◎

degit

GitHub - Rich-Harris/degit: Straightforward project scaffolding

  • マスタッシュ記法によるテンプレート化などを一切サポートしないGithubベースのスキャフォルディングツール
  • クローンせず、ただレポジトリをダウンロードするだけなので非常に高速
  • 作者「git clone --depth 1でもいいけど.gitディレクトリがついてきたりするから、こっちのが良いぜ」
  • テンプレート化とかとにかく考えないでリポジトリをスケルトンとしてつかうんや!みたいな用途には最適っぽい

(番外編) cooking

f:id:IzumiSy:20171012231647p:plain:w170

cooking - 更易上手的前端构建工具

  • 毛色が違うがslushのテンプレートを探していて見つけたので最後に紹介
  • webpackを使うフロントエンド・アプリケーションの開発に特化したスキャフォルディングツール
  • slushのテンプレートを検索していると、slush-cooking-xxxというのがでてくるが、それがcookingのテンプレート
  • cooking initを実行するとデフォルトでslush-cooking-vueが指定されたり、ナチュラルに中国語が出てきたりするので挙動がよくわからないときがあるが、そのあたりさえ割り切れればわりと使いやすそうな雰囲気がある

まとめ

  • おそらくこの中で使うならdegitとpollinate
  • 特にpollinateは機能面ですごく申し分ないし、それにロゴも緑のエコロジーな感じで○
  • プライベート・リポジトリ対応などは調べていないが、どのツールもあまり望めないと思われる