===
昔のと構成違うみたい。201505時点。簡単、1回やったら空でもできる。
目的
保存したい構成(Gulpfile をはじめとする構成)をそっと保存して、いつでもいつまでもどこでも使いたいから yo 使ってみた。
npm に上げるぜ。
答え
$ npm i -g yo generator-generator
$ yo generator:app # you answer "sample"
$ cd generator-sample
$ cd generator/app
$ ls # -> index.js, templates/
$ cd templates
$ touch Gulpfile.coffee
$ cd ../
[Edit] $ vi index.js
$ cd ../../../
$ mkdir node_modules
$ cp generator-sample node_modules/
$ yo
$ cd generator-sample
$ npm adduser
$ npm publish
ルール
yo は雛形を generator-@@@ の形で使います。
./node_modules 以下に generator-@@@ としたディレクトリが存在し、尚且つそれ以下の package.json や index.js の存在を見て、yo は generator だと判別します。
手順
$ npm i -g yo generator-generator
$ yo generator:app
今回は、Sample っていう generator を作る。
だから basename は sample って答える。
よし、generator-sample ができた。
$ cd generator-sample
ここが本部なので、npm に上げるときは、ここの package.json を編集して publish する。
$ cd generator/app
$ ls # -> index.js, templates/
index.js が yo を喋らしたり、初期化のメイン処理をやってくれる奴。
templates に今回作りたい大体のプロジェクトをつっこんで、あとで index.js を編集して正しく生成してもらう。
$ cd templates
$ touch Gulpfile.coffee
$ cd ../
[Edit] $ vi index.js
中に、明らかにコピーしている部分がある。
writing: {
app: function () {
this.fs.copy(
this.templatePath('_package.json'),
this.destinationPath('package.json')
);
this.fs.copy(
this.templatePath('_bower.json'),
this.destinationPath('bower.json')
);
},
ここを増やして、Gulpfile.coffee もコピーしてもらうようにしとく。
とりあえず今回はこれで完成。
generator として yo が認識してくれるか確かめる。
$ cd ../../../
$ mkdir node_modules
$ cp generator-sample node_modules/
$ yo
ルールに従っているので、yo が Sample を認識してくれている。やったね。
$ cd generator-sample
$ npm adduser
$ npm publish
npm 公開できました。してないけど。