Skip to main content

c8r/genのcliのコードを分析してみる

· 2 min read

genを実際に読んでみようと思います。

検証方法

デバッグ方法をついでに書こうと思ったら、いい具合にいい記事が合ったので紹介。

vscodeでやる方法もあります。

cli.ts

cliを叩くところから

/lib/cli.js examples -Do --port 9000 --library glamorous

最初にmeowが動いて、

const cli = meow(helpMessage, options)

入力された設定の読み込み、

// cliから入力された第一引数をlocalDirnameに格納, なければcliを叩いた位置
const [localDirname = process.cwd()] = cli.input
// https://github.com/sindresorhus/read-pkg-up
// localDirnameから最も近い位置にあるpackage.jsonをreadする
const userPkg = readPkgUp.sync({ cwd: localDirname }) || {}
// ここに型を当てておいたほうが良さそう
const localOpts = {
// https://github.com/sindresorhus/dot-prop
// . でobjectを探索
...dot.get(userPkg, 'pkg.gen'),
// meowで定義したoptionsを展開
...cli.flags,
// 出力ディレクトリを指定
outDir: path.join(process.cwd(), cli.flags.outDir || ''),
}

dev-serverかhtmlの生成か

if (localOpts.dev) {
// 開発サーバーの立ち上げ
server(localDirname, localOpts)
} else {
// 静的サイトの生成
create(localDirname, localOpts)
}

ざっくりとこんな感じ。

依存Package

ざっくりと5つ

ん?同じ作者 ... !

にゃー

寝よう