
npm i biti -g
️ Este repositorio está desapercibido a favor de @rola/static y el proyecto ROLA.
biti watch pages/ static/ biti es bastante simple. Funciona en un solo directorio de páginas, que cada una define y exporta propiedades y métodos que biti usa para representar la página.
Para los ejemplos aquí, usaremos /pages como el directorio de nuestras páginas, pero podría llamarlo cualquier cosa.
Cada página requiere las siguientes exportaciones:
pathname - String - la ruta donde desea que aparezca la páginaview - Función - Una función que devuelve un componente React La propiedad PathName se pasará al componente view .
Una página simple puede verse así:
import React from 'react'
export const pathname = '/about'
export function view ( { pathname } ) {
return (
< >
< h1 > About Us </ h1 >
< p > ... </ p >
</ >
)
} Las páginas también pueden exportar un objeto state , que también se pasará a la función view al renderizar.
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 >
</ >
)
} Las rutas que requieren datos o aquellas que necesitan propiedades dinámicas pueden definir una función config que devuelve una configuración de página que contenga las mismas propiedades enumeradas anteriormente.
Estos valores se fusionarán profundamente con cualquier exportación estática.
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 >
) ) }
</ >
)
} Para páginas generativas y paginación, la función config también puede devolver una matriz de configuraciones de página . Cada una de estas configuraciones debe definir su propio pathname , de modo que cada página se represente por separado.
El siguiente ejemplo generará una página para cada publicación devuelta 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 admite una configuración mínima, y de lo contrario se vuelve a ser predeterminados inteligentes. Para definir una configuración para todas las tareas de representación, puede crear un archivo biti.config.js .
biti admite las siguientes propiedades en el archivo de configuración:
env - Objeto - Las propiedades en este objeto se unirán a process.env , así como se definirá globalmente dentro de la compilación.alias - Objeto - Alias de importación del móduloEjemplo:
module . exports = {
env : {
API_KEY : 'abcdefg'
} ,
alias : {
components : './src/components'
}
} Por defecto, biti define un solo alias @ que apunta a process.cwd() . Puede usarlo a lo largo de sus plantillas como esta:
import Component from '@/src/components/Component.js' biti solo tiene dos comandos: render y watch .
Ambos siguen el mismo patrón:
biti < command > < src > < dest >Por ejemplo:
biti render /pages /static Estos comandos también aceptan globos como propiedad src , lo que le permite especificar páginas o directorios individuales.
biti render /pages/about-us.js /static
biti render /pages/ * .js /static
biti render /pages/marketing-site/ * .js /static
biti render /pages/ ** / * .js /static El uso de biti programáticamente es prácticamente lo mismo que usar la CLI, solo que necesitará pasar su objeto de configuración manualmente.
const biti = require ( 'biti' )
const config = {
env : { ... } ,
alias : { ... }
}
const app = biti ( config ) Tanto render como watch tienen la siguiente firma:
app . render ( src , dest ) Rendera todas las páginas de src dest .
app . render ( '/src' , '/static' ) Observa todas las páginas en src y se reproduce para dest en el cambio de archivos.
app . watch ( '/src' , '/static' ) Una instancia biti también emite algunos eventos útiles.
Después de representar una sola página.
app . on ( 'render' , page => { } ) Después de representar todas las páginas. En el reloj se llama esto después de que cada cambio se haya compilado y renderizado.
app . on ( 'rendered' , pages => { } ) app . on ( 'error' , error => { } ) Licencia del MIT © Eric Bailey