Browserifyのrequire用のindex.coffeeを手作業で書いてたらしんどかったのでイッパツでできるようにした

前回の製作でBrowserifyによるファイル分割の楽さに気づいたというか分割しなきゃ作業しづらすぎなので、同時進行していたプロジェクトのファイル分割にも乗り出したが、コンポーネントの多さにコピペに飽きたのがあらすじ。

ファイル名とディレクトリ名を手がかりに命名する

前職ではほぼはじめからおわりまでrailsで仕事をしていたので、ディレクトリやファイルを命名規則にしたがってやっていけばよしなにしてくれるのがよい。

なのでそのような感じにした。

ソース

https://gist.github.com/mmmpa/f2ec45a58be575618152

こんなんなってる(実際は下にもっとダバダバある)

src
├─ app
│   ├─ views
│   │   ├─ account-index
│   │   │   ├─ add-account-control.coffee
│   │   │   ├─ core.coffee
│   │   │   ├─ table-body.coffee
│   │   │   ├─ table-header.coffee
│   │   │   └─ table.coffee
│   │   │
│   │   ├─ common
│   │   │   ├─ delete-button.coffee
│   │   │   ├─ edit-button.coffee
│   │   │   ├─ fa.coffee
│   │   │   └─ page-title.coffee
│   │   │

こうして

$ coffee index-coffee-generator.coffee src/app/views
generate src/app/views/index.coffee
generate src/app/views/account-index/index.coffee
generate src/app/views/common/index.coffee

こうなる

module.exports = Views = {}
Views.AccountIndex = require './account-index'
Views.Common = require './common'
# Generated by IndexCoffeeGenerator
module.exports = AccountIndex = {}
AccountIndex.AddAccountControl = require './add-account-control'
AccountIndex.Core = require './core'
AccountIndex.TableBody = require './table-body'
AccountIndex.TableHeader = require './table-header'
AccountIndex.Table = require './table'
# Generated by IndexCoffeeGenerator
module.exports = Common = {}
Common.DeleteButton = require './delete-button'
Common.EditButton = require './edit-button'
Common.Fa = require './fa'
Common.PageTitle = require './page-title'
# Generated by IndexCoffeeGenerator

Viewsとかあれな名前はAppのindex.coffeeでよしなにする

module.exports = App = {}

App.View = require './views'

確認なしでindex.coffeeを上書きします

ご注意。