s2s.config.js
をプロジェクトのルートに配置します。基本的に必要となる項目は、plugins
とtemplates
の 2 つです。
module.exports = {
plugins: [],
templates: [],
}
対象となるファイルを Glob パターンで指定します。デフォルトは./**/*.js
でjs
を対象に取ります。
オブジェクトの配列を指定します。必須項目は、test
です。
test
は、対象とするファイルを正規表現で指定します。
plugin
はそれぞれのハンドラーで指定されたオプションを指定します。デフォルトでは、babel の plugin を指定します。なので、.babelrc
の指定方法と同様にプラグイン名、オプションが必要な場合は、配列で渡すことが可能です。
type EventType = 'add' | 'change' | 'unlink'
type Only = EventType[]
type Plugin = {|
test: RegExp | string | string[],
plugin?: *,
only?: Only,
input?: FileName,
output?: FileName,
|}
テンプレートからファイルをコピーします。必要項目は、test
とinput
です。
test
は、plugins と同様にファイルパスを正規表現で指定します。
input はtemplates
ディレクトリにあるファイルを指定します。
type Template = {|
test: RegExp | string | string[],
input: Path,
output?: Path,
|}
また、ejs 形式の埋め込みをサポートしており、デフォルトではFILENAME
でファイル名が、DIRNAME
で親ディレクトリ名が渡されます。
Hello/index.js
console.log("<%= DIRNAME %>")
↓ ↓ ↓
console.log("Hello")
{ [extensions: string]: Handler }
必須ではありません。ハンドラの拡張子を指定することでそのハンドラを実行します。未指定の場合、デフォルトで .js
.jsx
.ts
.tsx
をそれぞれ処理します。
handlerMapper: {
'*.ts': typescriptHandler
}
必須ではありません。 hook の配列を指定します。 handler が実行された際に、指定された hook が実行されます。
export type AfterHook = (code: Code, path: Path) => Code
必須ではありません。デフォルトで true
が指定されています。
true が指定されていると、 prettierHook が有効になります。