Firebase Studio offre un'ampia gamma di modelli integrati che includono tutti i file, i pacchetti di sistema (ad esempio, i compilatori) e le estensioni necessarie per iniziare rapidamente a utilizzare un linguaggio o un framework.
Puoi anche avviare uno spazio di lavoro Firebase Studio utilizzando i modelli della community ospitati su GitHub. Per saperne di più su come avviare un nuovo workspace da un modello, vedi Creare uno spazio di lavoro Firebase Studio.
La maggior parte degli utenti utilizzerà i modelli integrati o importerà progetti da Git, ma per i casi d'uso più avanzati, puoi creare i tuoi modelli:
Se crei il tuo framework, la tua libreria o il tuo servizio, puoi consentire ai tuoi utenti di iniziare rapidamente a utilizzare la tua tecnologia senza mai uscire dal browser, con tutta la potenza di una macchina virtuale basata sul cloud.
Se hai uno stack tecnologico preferito per i tuoi progetti, puoi semplificare la procedura di avvio di nuovi progetti con un modello personalizzato.
Se insegni ad altri, ad esempio tramite un tutorial o un codelab, puoi rimuovere alcuni dei passaggi iniziali per i tuoi studenti preconfigurando il punto di partenza del codelab come modello personalizzato.
Dopo aver creato e testato il modello personalizzato, puoi creare un link
per il modello da inserire nel tuo sito web, nel file README
del repository Git, nella pagina dei dettagli del pacchetto (ad esempio in NPM) o in qualsiasi altro luogo in cui prevedi che gli utenti inizino a utilizzare la tua tecnologia.
Prerequisiti
Prima di iniziare:
Scopri come utilizzare il file
idx/dev.nix
per personalizzare il tuo ambiente.Acquisisci familiarità con le nozioni di base del linguaggio Nix e tieni a portata di mano il riferimento.
Struttura del file modello
Un modello Firebase Studio è un repository Git pubblico (o una cartella o un ramo in un repository) che contiene almeno due file:
idx-template.json
include i metadati del modello, inclusi nome, descrizione e parametri visibili agli utenti per configurare il modello. Ad esempio, puoi consentire agli utenti di scegliere tra diversi linguaggi di programmazione o casi d'uso di esempio. Firebase Studio utilizza queste informazioni per preparare l'interfaccia utente mostrata agli utenti quando scelgono di creare un nuovo spazio di lavoro dal tuo modello.idx-template.nix
è un file scritto con il linguaggio Nix che contiene uno script della shell Bash (racchiuso in una funzione Nix) che:Crea la directory di lavoro per il nuovo spazio di lavoro.
Configura il suo ambiente creando un file
.idx/dev.nix
. Tieni presente che puoi anche eseguire uno strumento di scaffolding del progetto comeflutter create
onpm init
in questo script oppure eseguire uno script personalizzato scritto in Go, Python, Node.js o un altro linguaggio.Questo file verrà eseguito con i parametri specificati dall'utente quando Firebase Studio carica il modello.
Insieme a questi due file, possono essere inclusi altri file da utilizzare in
idx-template.nix
per creare un'istanza del modello. Ad esempio, potresti
includere il file .idx/dev.nix
finale o persino tutti i file
di scaffolding direttamente nel repository.
Creare un modello iniziale
Per velocizzare la creazione dei modelli, ti consigliamo di iniziare con uno dei seguenti metodi per creare un modello Firebase Studio che puoi personalizzare ulteriormente:
- Trasformare qualsiasi repository GitHub pubblico in un modello
- Utilizzare un modello ufficiale o della community come base per il tuo modello
Un esempio di base: trasforma qualsiasi repository GitHub pubblico in un modello
Prima di entrare nei dettagli su come definire idx-template.json
e
idx-template.nix
, è utile vedere un modello di esempio di base che:
- Non contiene parametri configurabili dall'utente.
- Copia tutti i file nel repository dei modelli (ad eccezione dei due file
idx-template
) nel workspace dell'utente. Dovrebbe già esistere una sottocartella.idx
con un filedev.nix
che definisce l'ambiente.
Se aggiungi i seguenti file a un repository GitHub pubblico (o a una sottocartella o a un ramo), questo repository diventa un modello Firebase Studio.
idx-template.json
{
"name": "Hello world",
"description": "A template for a CLI program that prints 'hello world'",
"icon": "https://www.gstatic.com/images/branding/productlogos/studio/v1/192px.svg",
"params": []
}
idx-template.nix
# No user-configurable parameters
{ pkgs, ... }: {
# Shell script that produces the final environment
bootstrap = ''
# Copy the folder containing the `idx-template` files to the final
# project folder for the new workspace. ${./.} inserts the directory
# of the checked-out Git folder containing this template.
cp -rf ${./.} "$out"
# Set some permissions
chmod -R +w "$out"
# Remove the template files themselves and any connection to the template's
# Git repository
rm -rf "$out/.git" "$out/idx-template".{nix,json}
'';
}
Vai a Personalizzare il modello per scoprire altre modifiche che puoi apportare per personalizzare il modello.
Creare un modello personalizzato utilizzando un modello ufficiale o della community
Il team di Firebase Studio gestisce due repository per i modelli di Firebase Studio:
Modelli ufficiali: questi sono i modelli che selezioni direttamente dalla dashboard Firebase Studio quando crei una nuova app.
Modelli della community: Questi modelli consentono i contributi della community open source. Per utilizzare un modello della community, clona il repository Git dei modelli della community. Puoi utilizzare il link completo al modello che vuoi utilizzare.
Per creare un modello personalizzato basato su un modello esistente:
Decidi quale modello utilizzare come base per il modello personalizzato, poi clona il progetto.
Personalizza
idx-template.json
,idx-template.nix
e.idx/dev.nix
in base alle tue esigenze, iniziando da Personalizza il modello.Esegui il check-in delle modifiche nel repository.
Segui la procedura descritta in Crea un nuovo spazio di lavoro per il tuo modello per pubblicare e testare il modello. Se utilizzi un repository nidificato, collegalo direttamente nel tuo URL. Ad esempio, se utilizzavi il modello della community "Vanilla Vite", devi eseguire il provisioning e testare un nuovo spazio di lavoro utilizzando il seguente URL:
https://studio.firebase.google.com/new?template=https://github.com/firebase-studio/community-templates/tree/main/vite-vanilla
Vai a Personalizzare il modello per scoprire altre modifiche che puoi apportare per personalizzare il modello.
Personalizzare il modello
Ora che hai creato un modello di base su cui lavorare, puoi modificare i file
idx-template.json
, idx-template.nix
e .idx/dev.nix
in base ai tuoi
requisiti. Potresti voler personalizzare configurazioni aggiuntive:
- Aggiungi pacchetti di sistema allo
bootstrap
script. - Aggiungere parametri configurabili dall'utente
- Scegliere quali file devono essere aperti per impostazione predefinita
- Scegliere un'icona predefinita per l'area di lavoro
Utilizzare pacchetti di sistema aggiuntivi nello script bootstrap
L'esempio di base utilizza solo i comandi POSIX di base per copiare
i file nella posizione corretta. Lo script bootstrap
del modello potrebbe richiedere
l'installazione di ulteriori file binari, come git
, node
, python3
o
altri.
Puoi rendere disponibili pacchetti di sistema aggiuntivi per lo script di bootstrap
specificando packages
nel file idx-template.nix
, proprio come faresti per
personalizzare uno spazio di lavoro con pacchetti di sistema
aggiuntivi aggiungendo packages
nel file dev.nix
.
Ecco un esempio di aggiunta di pkgs.nodejs
, che include file binari come node
,
npx
e npm
:
# idx-template.nix
{pkgs}: {
packages = [
# Enable "node", "npm" and "npx" in the bootstrap script below.
# Note, this is NOT the list of packages available to the workspace once
# it's created. Those go in .idx/dev.nix
pkgs.nodejs
];
bootstrap = ''
mkdir "$out"
# We can now use "npm"
npm init --yes my-boot-strap@latest "$out"
''
}
Aggiungere parametri configurabili dall'utente
Per consentire agli utenti di personalizzare il punto di partenza del nuovo progetto, puoi
creare più modelli o un singolo modello con parametri.
Questa è un'ottima opzione se i diversi punti di partenza sono solo valori diversi passati a uno strumento CLI (ad esempio --language=js
anziché --language=ts
).
Per aggiungere parametri:
- Descrivi il parametro nell'oggetto
params
del file di metadatiidx-template.json
. Firebase Studio utilizza le informazioni contenute in questo file per preparare l'interfaccia utente (ad esempio caselle di controllo, menu a discesa e campi di testo) mostrata agli utenti del modello. - Aggiorna il bootstrap
idx-template.nix
per utilizzare i valori selezionati dall'utente durante l'istanza del modello.
Descrivi il parametro in idx-template.json
Ecco un esempio di aggiunta di un parametro enum
, che Firebase Studio
viene visualizzato come menu a discesa o gruppo di pulsanti di opzione, a seconda del
numero di opzioni:
{
"name": "Hello world",
"description": "A hello world app",
"params": [
{
"id": "language",
"name": "Programming Language",
"type": "enum",
"default": "ts",
"options": {
"js": "JavaScript",
"ts": "TypeScript"
},
"required": true
}
]
}
Poiché sono presenti due valori (JavaScript e TypeScript), l'interfaccia utente visualizzerà un
gruppo di pulsanti di opzione per le due opzioni e passerà il valore ts
o js
allo
script idx-template.nix
.
Ogni oggetto parametro ha le seguenti proprietà:
PROPRIETÀ | TIPO | DESCRIZIONE |
---|---|---|
id | string |
L'ID univoco del parametro, simile al nome di una variabile. |
nome | string |
Il nome visualizzato di questo parametro. |
tipo | string |
Specifica il componente UI da utilizzare per questo parametro e il tipo di dati da passare allo script di bootstrap. I valori validi sono:
|
opzioni del modello. | object |
Per i parametri enum , rappresenta le opzioni da mostrare agli utenti. Ad esempio, se le opzioni sono {"js": "JavaScript", ...} , "JavaScript" verrà visualizzato come opzione e, se selezionato, il valore di questo parametro sarà js . |
predefinita | string o boolean |
Imposta il valore iniziale nell'interfaccia utente. Per i parametri enum , deve essere una delle chiavi in options . Per i parametri boolean , questo valore deve essere true o false . |
di provisioning. | boolean |
Indica che questo parametro è obbligatorio. |
Utilizzare i valori dei parametri in idx-template.nix
Dopo aver definito l'oggetto params
nel file idx-template.json
, puoi
iniziare a personalizzare lo script di bootstrap in base ai valori dei parametri scelti dall'utente.
Seguendo l'esempio nella sezione precedente, se hai un singolo parametro
con ID language
che è un'enumerazione con valori possibili ts
o js
, puoi utilizzarlo
nel seguente modo:
# idx-template.nix
# Accept additional arguments to this template corresponding to template
# parameter IDs, including default values (language=ts by default in this example).
{ pkgs, language ? "ts", ... }: {
packages = [
pkgs.nodejs
];
bootstrap = ''
# We use Nix string interpolation to pass the user's chosen programming
# language to our script.
npm init --yes my-boot-strap@latest "$out" -- --lang=${language}
''
}
Un altro pattern comune consiste nell'includere in modo condizionale i contenuti a seconda del valore di una stringa. Un altro modo per scrivere l'esempio precedente è:
npm init --yes my-boot-strap@latest "$out" -- \
${if language == "ts" then "--lang=ts" else "--lang=js" }
Scegliere i file da aprire per impostazione predefinita
È consigliabile personalizzare i file da aprire per la modifica quando vengono creati nuovi spazi di lavoro con il tuo modello. Ad esempio, se il modello è per un sito web di base, ti consigliamo di aprire i file HTML, JavaScript e CSS principali.
Per personalizzare i file da aprire per impostazione predefinita, aggiorna il file .idx/dev.nix
(non il file idx-template.nix
!) in modo da includere un hook dello spazio di lavoro onCreate
con un attributo openFiles
, come segue:
# .idx/dev.nix
{pkgs}: {
...
idx = {
# Workspace lifecycle hooks
workspace = {
# Runs when a workspace is first created with this `dev.nix` file
onCreate = {
# Open editors for the following files by default, if they exist.
# The last file in the list will be focused.
default.openFiles = [
"src/index.css"
"src/index.js"
"src/index.html"
];
# Include other scripts here, as needed, for example:
# installDependencies = "npm install";
};
# To run something each time the workspace is (re)started, use the `onStart` hook
};
# Enable previews and customize configuration
previews = { ... };
};
}
Scegliere un'icona predefinita per l'area di lavoro
Puoi scegliere l'icona predefinita per gli spazi di lavoro creati con il tuo modello posizionando un file PNG denominato icon.png
accanto al file dev.nix
all'interno della directory .idx
.
Testare il modello in un nuovo workspace
Il modo più semplice per testare il modello end-to-end è creare un nuovo spazio di lavoro con questo modello. Visita il seguente link, sostituendo l'esempio con l'URL del repository GitHub del tuo modello:
https://idx.google.com/new?template=https://github.com/my-org/my-repo
Se vuoi, puoi includere un ramo e una sottocartella. Tutti i seguenti sono validi, purché siano accessibili pubblicamente:
https://github.com/my-org/my-repo/
https://github.com/my-org/my-repo/tree/main/path/to/myidxtemplate
https://github.com/my-org/my-repo/tree/branch
https://github.com/my-org/my-repo/tree/branch/path/to/myidxtemplate
Questo è anche l'URL che condividerai con altri in modo che possano utilizzare il tuo nuovo modello o l'URL a cui creerai un link dal pulsante "Apri in Firebase Studio".
Condividere il modello
Dopo aver verificato che il modello si comporti come previsto, pubblicalo in un repository GitHub e condividi lo stesso link che hai utilizzato quando hai creato uno spazio di lavoro per i test.
Per consentire agli utenti di trovare ancora più facilmente il tuo modello, aggiungi un pulsante"Apri in Firebase Studio" al tuo sito web o al file README del repository.