npm i biti -g
️ Ce repo est obsolète en faveur de @ Rola / Static et du projet Rola.
biti watch pages/ static/
biti
est assez simple. Il fonctionne sur un seul répertoire de pages, qui définissent et exportent chacun des propriétés et des méthodes que biti
utilise pour rendre la page.
Pour les exemples ici, nous utiliserons /pages
comme répertoire de pages, mais vous pouvez l'appeler n'importe quoi.
Chaque page nécessite les exportations suivantes:
pathname
- String - le chemin où vous aimeriez que la page apparaisseview
- Fonction - Une fonction qui renvoie un composant React La propriété PathName sera transmise au composant view
.
Une page simple peut ressembler à ceci:
import React from 'react'
export const pathname = '/about'
export function view ( { pathname } ) {
return (
< >
< h1 > About Us </ h1 >
< p > ... </ p >
</ >
)
}
Les pages peuvent également exporter un objet state
, qui sera également transmis à la fonction view
lors du rendu.
import React from 'react'
export const pathname = '/about'
export const state = {
title : 'About Us' ,
description : '...'
}
export function view ( { state , pathname } ) {
return (
< >
< h1 > { state . title } </ h1 >
< p > { state . description } </ p >
</ >
)
}
Les voies qui nécessitent des données ou celles qui ont besoin de propriétés dynamiques peuvent définir une fonction config
qui renvoie une configuration de page contenant les mêmes propriétés énumérées ci-dessus.
Ces valeurs seront profondément fusionnées avec toutes les exportations statiques fournies.
import React from 'react'
import { getAboutPage } from './lib/api.js'
export const pathname = '/about'
export const state = {
title : 'About Us' ,
team : [
'Eric'
]
}
export function config ( ) {
return getAboutPage ( )
. then ( res => {
return {
state : {
team : res . team
}
}
} )
}
export function view ( { state , pathname } ) {
return (
< >
< h1 > { state . title } </ h1 >
< h2 > Team </ h2 >
{ state . team . map ( name => (
< p key = { name } > { name } </ p >
) ) }
</ >
)
}
Pour les pages génératives et la pagination, la fonction config
peut également renvoyer un tableau de configurations de page . Chacune de ces configurations doit définir son propre pathname
, de sorte que chaque page est rendue séparément.
L'exemple suivant générera une page pour chaque message renvoyé à partir de getBlogPosts
:
import React from 'react'
import { getBlogPosts } from './lib/api.js'
export function config ( ) {
return getBlogPosts ( )
. then ( posts => {
return posts . map ( post => ( {
pathname : `/posts/ ${ post . slug } ` ,
state : {
title : post . title ,
content : post . content
}
} ) )
} )
}
export function view ( { state , pathname } ) {
return (
< >
< h1 > { state . title } </ h1 >
< article >
{ state . content }
</ article >
</ >
)
}
biti
prend en charge la configuration minimale et se replie autrement aux défauts de défaut intelligents. Pour définir une configuration pour toutes les tâches de rendu, vous pouvez créer un fichier biti.config.js
.
biti
prend en charge les propriétés suivantes sur le fichier de configuration:
env
- Object - Les propriétés de cet objet seront attachées à process.env
, ainsi que définies globalement dans la compilation.alias
- objet - alias d'importation du moduleExemple:
module . exports = {
env : {
API_KEY : 'abcdefg'
} ,
alias : {
components : './src/components'
}
}
Par défaut, biti
définit un seul alias @
qui pointe vers process.cwd()
. Vous pouvez l'utiliser dans vos modèles comme ceci:
import Component from '@/src/components/Component.js'
biti
n'a que deux commandes: render
et watch
.
Les deux suivent le même modèle:
biti < command > < src > < dest >
Par exemple:
biti render /pages /static
Ces commandes acceptent également les globs comme la propriété src
, vous permettant de spécifier des pages ou des répertoires individuels.
biti render /pages/about-us.js /static
biti render /pages/ * .js /static
biti render /pages/marketing-site/ * .js /static
biti render /pages/ ** / * .js /static
L'utilisation biti
programmatiquement est pratiquement la même que l'utilisation de la CLI, seulement vous devrez passer manuellement votre objet de configuration.
const biti = require ( 'biti' )
const config = {
env : { ... } ,
alias : { ... }
}
const app = biti ( config )
render
et watch
ont la signature suivante:
app . render ( src , dest )
Rend toutes les pages de src
dest
.
app . render ( '/src' , '/static' )
Regarde toutes les pages de src
et rend le dest
sur le changement de fichier.
app . watch ( '/src' , '/static' )
Une instance biti
émet également quelques événements utiles.
Après avoir rendu une seule page.
app . on ( 'render' , page => { } )
Après avoir rendu toutes les pages. Sur Watch, cela s'appelle une fois que chaque changement a été compilé et rendu.
app . on ( 'rendered' , pages => { } )
app . on ( 'error' , error => { } )
Licence MIT © Eric Bailey