新しいの作るたび最初にあれこれ設定ファイル(*.json
, .*rc
)を用意すると思いますが、あんましググらずに用意できたことがないなと思って。この辺やっぱり CLI で作れたら楽かな思ったので、mozaとかいうの作りました。
流れ
-
./.moza/
か~/.config/moza/
ディレクトリに*.hbs
(handlebars)ファイルを置く - その頭にフロントマターを記述(yargsのoptions形式)
- その下にhandlebarsで適当にテンプレートを書く
- コマンド実行でテンプレートを展開してファイル作成
プロジェクト固有なのは
./.moza/*.hbs
みたいな
インスト
npm i -g moza
# yarn global add moza
実行。
moza
# npx moza
例
こんなファイルを./.moza/
下に置く。
tsconfig.hbs
---
CONFIG:
description: description
usage: usage
NOTE: |
`preact`や`ink`を使う場合は、`--jsx-factory`に`h`を指定
lib:
alias: l
default:
- es2016
- es2017
- es2017.object
target: es6
jsx:
default: false
type: boolean
jsxFactory:
default: React.Component
type: string
choices:
- React.Component
- h
module: commonjs
---
{
"compilerOptions": {
"target": "{{target}}",
"module": "{{module}}",
"lib": [
{{#each lib}}
"{{this}}"{{#unless @last}},{{/unless}}
{{/each}}
],
{{#if jsx}}
"jsx": "React",
"jsxFactory": "{{jsxFactory}}",
{{/if}}
"strict": true,
"sourceMap": true
},
include: [
"./src/**/*.ts",
"./src/**/*.tsx"
]
}
すると、tsconfig.hbs
というファイルだったので、tsconfig
というコマンドが使えるようになっています。またCONFIG
とNOTE
以外は KebabCase に変換されてフラグで渡せるようになってます。
moza --help # # Commands: # tsconfig # moza tsconfig --help # # Variables: # --lib, -l [default: ["es2016","es2017","es2017.object"]]
--target [default: "es6"]
--jsx [boolean] [default: false]
--jsx-factory
[string] [choices: "React.Component", "h"] [default: "React.Component"]
--module [default: "commonjs"]
> ---
>
> - `CONFIG.description`には`tsconfig`コマンドの説明。
> - `CONFIG.usage`には`--help`時に表示される使い方。
> - `NOTE`には`moza note tsconfig`みたいにした時に表示できるテキスト。(`npm i ...............`みたいなの書く想定で…)
あとは`moza tsconfig [flags] <dest-path>`みたいな感じで生成だけです。
> 1つ注意で、`type: array`なフラグがある場合は`<dest-path>`の前に`--`が必要です。
>
> ```bash
> moza foo --value 0 --value 1 --value 2 -- foo.json
> ```
>
> ---
> 
以上!
## その他
### リモートにあるテンプレートファイルを取ってくる
例えばgistとかから。
```bash
moza add <url> --output foo.hbs # ダウンロードして ./.moza/foo.hbs へ作成
moza add -g <url> -o foo.hbs # 〃 ~/.config/moza/foo.hbs
持ってるテンプレートファイル一覧を見る
パスも表示されるので削除するときとか。
moza ls # ./.moza/*
moza ls -g # ~/.config/moza/*
ノート表示
moza note <command>