LoginSignup
2
2

More than 5 years have passed since last update.

yo の generator 作って npm に上げる

Last updated at Posted at 2015-05-20

===

昔のと構成違うみたい。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 公開できました。してないけど。

2
2
0

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
2
2