Barrel
TypeScriptのBarrel
前提
方法
こんな感じで書く
hoge/index.tsexport { hoge } from './model';
export { piyo } from './view';
するとimport側がこうなる
ts// before
import { hoge } from 'src/hoge/model'
import { piyo } from 'src/hoge/view'
// after
import { hoge, piyo } from 'src/hoge'
こうも書ける
後述するが、これは問題があったりなかったりする
良い点
そのModuleが何を公開しているのかが明示的になる
ただしこれは *
で書いてたら効能はない
Barrelを使わなくても、ファイル内の export
の有無でもpublicかどうかは明示できるが、testが絡むと少し話が変わる
tsはtestは別ファイルに書かないといけないので、そのためにexportしないといけない
Barrelによって、testのためのexportなのか、本当に公開したいのか、が明示できる
ファイル名の変更をしてもindex.tsを修正するだけで済む
微妙な点
わざわざ書くのがダルい
しかし *
にすると、「index.tsがでかくなってきたら(exportが増えたら)、コードの不吉な匂いとしてる」ができない
'cmd-.'の自動importはbarrelの方を見てくれない(?)
ちゃんと見てくれる

こういう話もあるらしい
でもこれ「biuildサイズを減らす時に障害になる」という説明ではないか
なんでこのscprapsにまとめられているのかよくわからん
#??
結局やりたいことって、
package外への公開
package内への公開
を区別したいだけ