May 13, 2019
iOS/Andorid対応する際にiOSをメインで作っていたので
それぞれのOS用のComponentに切り出す際に毎回components/XXX/index.os.tsx
とindex.d.ts
を作成するのがめんどくさかったので
jondot/hygenを導入してみた。
$ yarn add hygen -D
$ yarn hygen init self
でhygenが用意したhelloworldのテンプレートがroot/_templateに生成される。 生成された例とDoc参考に作れば大体いけるはず
_template/generator/名前/
配下に
hygen/templatesを参考に.ejs.t
でtemplateを作成し
yarn hygen generator 名前
するとfrontmatterで指定したto:
へフォルダ配下のファイルを作成してくれる。
今回は.ios.tsx
を作成した後にfrontmatterのsh:
でcpコマンドを叩き.android.tsx
を作成している。
今回の例だとあまり恩恵無さそうだがReduxのreducer/actionなんかをtemplate化しておいたりして
$yarn hygen actiona_name
なんかでactions/name.js | reducer/name.jsを作るようにするしたりとかすると恩恵でかいと思う。
---
to: js/components/<%= name %>/index.ios.tsx
sh: cp js/components/<%= name %>/index.ios.tsx js/components/<%= name %>/index.android.tsx
---
import React from 'react';
import styled from 'styled-components/native';
export default function <%= name %>({
props,
}: {
props: any
}) {
return (
<TemplateText>SFC TEXT COMPONENT</TemplateText>
);
}
const TemplateText = styled.Text`
color: red;
`;