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を上書きします
ご注意。