Générez des fichiers TypeScript avec des couleurs, des polices et des ombres à partir des styles Figma. Générez des icônes et des images à partir du fichier Figma.
npm install -D figma-styles-to-ts Tout d'abord, vous devez donner votre personal figma token (vous pouvez le faire une fois, le jeton sera enregistré). Il sauvera votre jeton personnel dans / node_modules et générera les styles.
figma-styles-to-ts --token= " your_token "La prochaine fois, vous n'avez qu'à utiliser ceci:
figma-styles-to-tsPour réinitialiser votre jeton:
figma-styles-reset && figma-styles-to-ts --token= " your_new_token " Créez un fichier figma.config.json à la racine de votre projet.
{
"fileKey" : " your_file_key " ,
"color" : {
"enable" : false ,
"outDir" : " color_out_dir " ,
"template" : " default " ,
"base" : " "
},
"font" : {
"enable" : false ,
"outDir" : " font_out_dir " ,
"template" : " default " ,
"base" : " "
},
"shadow" : {
"enable" : false ,
"outDir" : " shadow_out_dir " ,
"template" : " default " ,
"base" : " "
},
"icon" : {
"enable" : false ,
"outDir" : " icon_out_dir " ,
"template" : " default " ,
"storybook" : false ,
"page" : " the_page " ,
"container" : " the_icons_container "
},
"image" : {
"enable" : false ,
"outDir" : " image_out_dir " ,
"page" : " the_page " ,
"container" : " the_images_container "
}
}| Configurer | Résumé |
|---|---|
fileKey | La clé de fichier de votre fichier Figma. Ex: https://www.figma.com/file/<file_key_here>/name?node-id=11:09 |
one value avec un normal blend mode seront générées.
| Configurer | Résumé |
|---|---|
enable (par défaut: false ) | Activer le générateur de couleurs ( true ou false ). |
outDir | Le répertoire pour stocker le code généré (un fichier couleurs.ts sera généré dans ce dossier). |
template (par défaut: default ) | Utilisez le modèle default ou le modèle palette (voir modèles) ( 'default' ou 'palette' ). |
base (par défaut: all colors ) | Générez toutes les couleurs à partir du chemin de base. Ex: Toutes mes couleurs sont comme CompanyName / Black / 100. Utilisez la base: "CompanyName" pour obtenir toutes les couleurs de CompanyName. |
Le modèle default générera une constante de couleurs avec toutes les couleurs récursivement. Exemple:
const COLORS = {
CompanyName : {
Black : {
dark : { value : "#000000" }
light : { value : "#131231" }
} ,
White : {
value : "#FFFFFF"
}
} ,
CustomColor : {
value : "#452398"
}
} Le modèle palette générera une constante de couleurs avec des couleurs qui correspondent au format de palette. Vous devez nommer vos couleurs comme couleur / 100, couleur / 200, ..., couleur / 700 (seules les couleurs de 100 à 700 seront générées). Exemple:
const COLORS = {
Black : {
T100 : "#000001" ,
T200 : "#000002" ,
T300 : "#000003" ,
T400 : "#000004" ,
T500 : "#000005" ,
T600 : "#000006" ,
T700 : "#000007" ,
} ,
} ;| Configurer | Résumé |
|---|---|
enable (par défaut: false ) | Activer le générateur de police ( true ou false ). |
outDir | Le répertoire pour stocker le code généré (un fichier Fonts.ts sera généré dans ce dossier). |
template (par défaut: default ) | Utilisez le modèle default , react ou chakra (voir modèles) ( 'default' , 'reat' ou 'chakra' ). |
base (par défaut: all fonts ) | Générez toutes les polices à partir du chemin de base. EX: Toutes mes polices sont comme CompanyName / P1 / Bold. Utilisez la base: "CompanyName" pour obtenir toutes les polices de CompanyName. |
Le modèle default générera une constante de polices avec toutes les polices récursivement. Exemple:
const FONTS : Fonts = {
Bold : {
value : {
fontFamily : "Ubuntu" ,
fontWeight : 700 ,
fontSize : 12 ,
letterSpacing : 0 ,
lineHeight : "14.0625px" ,
} ,
} ,
Medium : {
value : {
fontFamily : "Ubuntu" ,
fontWeight : 500 ,
fontSize : 12 ,
letterSpacing : 0 ,
lineHeight : "14.0625px" ,
} ,
} ,
} ; Le modèle react générera le fichier Fonts.ts à partir du modèle par défaut et générera un composant de texte. Exemple:
const Text = ( { children , font , color , ... rest } : TextProps ) => {
return (
< p
style = { {
color : color ,
fontSize : font ?. fontSize ,
fontFamily : font ?. fontFamily ,
fontWeight : font ?. fontWeight ,
lineHeight : font ?. lineHeight ,
letterSpacing : font ?. letterSpacing ,
} }
{ ... rest }
>
{ children }
< / p>
) ;
} ; Le modèle chakra générera le fichier Fonts.ts à partir du modèle par défaut et générera un composant de paragraphe. Exemple:
const Paragraph = ( { children , font , color , ... rest } : ParagraphProps ) => {
return (
< Text
color = { color }
fontFamily = { font ?. fontFamily }
fontSize = { font ?. fontSize }
fontWeight = { font ?. fontWeight }
lineHeight = { font ?. lineHeight }
letterSpacing = { font ?. letterSpacing }
{ ... rest }
>
{ children }
</ Text >
) ;
} ;drop shadows avec un normal blend mode seront générées.
| Configurer | Résumé |
|---|---|
enable (par défaut: false ) | Activer le générateur d'ombre ( true ou false ). |
outDir | Le répertoire pour stocker le code généré (un fichier shadows.ts sera généré dans ce dossier). |
template (par défaut: default ) | Utilisez le modèle default ou le modèle palette (voir modèles) ( 'default' ou 'palette' ). |
base (par défaut: all shadows ) | Générez toutes les ombres à partir du chemin de base. EX: Toutes mes ombres sont comme CompanyName / Bottom / 100. Utilisez la base: "CompanyName" pour obtenir toutes les ombres de CompanyName. |
Le modèle default générera une constante d'ombres avec toutes les ombres récursivement. Exemple:
const SHADOWS = {
CompanyName : {
Bottom : {
dark : { value : "0px 0.5px 2px rgba(96, 97, 112, 0.16)" }
light : { value : "0px 2px 4px rgba(40, 41, 61, 0.04)" }
} ,
Top : {
value : "0px 2px 4px rgba(96, 97, 112, 0.16), 0px 0px 1px rgba(40, 41, 61, 0.04)"
}
} ,
CustomShadow : {
value : "0px 26px 34px rgba(96, 97, 112, 0.06)"
}
} Le modèle palette générera une constante d'ombres avec des ombres qui correspondent au format de palette. Vous devez nommer vos ombres comme Shadow / 100, Shadow / 200, ..., Couleur / 500 (seules les ombres de 100 à 500 seront générées). Exemple:
const SHADOWS = {
Bottom : {
T100 : "0px 0.5px 2px rgba(96, 97, 112, 0.16)" ,
T200 : "0px 2px 4px rgba(96, 97, 112, 0.16)" ,
T300 : "0px 2px 4px rgba(96, 97, 112, 0.16)" ,
T400 : "0px 8px 16px rgba(96, 97, 112, 0.16)" ,
T500 : "0px 26px 34px rgba(96, 97, 112, 0.06)" ,
} ,
} ;| Configurer | Résumé |
|---|---|
enable (par défaut: false ) | Activer le générateur d'icônes ( true ou false ). |
outDir | Le répertoire pour stocker le code généré. |
template (par défaut: default ) | Utilisez le modèle default ou le modèle react (voir modèles) ( 'default' ou 'react' ). |
storybook (par défaut: false ) | Générer un fichier index.stories.tsx (true ou false ) |
page (par défaut: the first page ) | Le nom de la page de vos icônes. |
container (par défaut: all components in the page ) | Le nom du conteneur dans la page de vos icônes ( |
Le modèle default générera des fichiers SVG. Exemple:
< svg width = " 12 " height = " 12 " viewBox = " 0 0 12 12 " fill = " none " xmlns = " http://www.w3.org/2000/svg " >
< path d = " M11 1L1 11M1 1L11 11 " stroke = " black " stroke-width = " 1.5 " stroke-linecap = " round " stroke-linejoin = " round " />
</ svg > Le modèle react générera des fichiers TSX avec le composant React. Exemple:
const Cross = ( props : React . SVGProps < SVGSVGElement > ) => {
return (
< svg
viewBox = "0 0 12 12"
fill = "none"
xmlns = "http://www.w3.org/2000/svg"
width = { props . width }
height = { props . height }
>
< path
d = "M11.2174 0.782609L0.782609 11.2174M0.782609 0.782609L11.2174 11.2174"
stroke = { props . fill }
strokeWidth = "1.5"
strokeLinecap = "round"
strokeLinejoin = "round"
/>
</ svg >
) ;
} ;
export default Cross ;
Use: < Cross height = { 20 } width = { 20 } fill = "#000000" /> ;fill scale mode , avec un normal blend mode et avec export settings seront générées.
PDF format n'est pas pris en charge.
| Configurer | Résumé |
|---|---|
enable (par défaut: false ) | Activer le générateur d'images ( true ou false ). |
outDir | Le répertoire pour stocker les images générées. |
page (par défaut: the first page ) | Le nom de la page de vos images. |
container (par défaut: all images in the page ) | Le nom du conteneur dans la page de vos images ( |
? Thomas Michel
Les contributions, les problèmes et les demandes de fonctionnalités sont les bienvenus!
N'hésitez pas à vérifier la page des problèmes.
Donnez un ️ si ce projet vous a aidé!
Copyright © 2021 Thomas Michel.
Ce projet est sous licence MIT.