Realizzare progetti web in HTML o PHP scolastici può risultare relativamente semplice semplice, ma ripetere la creazione manuale della struttura di file e cartelle può essere tedioso. Progetti più articolati con Laravel ad eempio prevedono gia uno script automatico per la creazione del necessario. In questo articolo vediamo come automatizzare il processo utilizzando semplici script in Bash (Linux), Batch DOS (Windows) e Python con interfaccia grafica (Tkinter). Esistono valice alternative come plugin di Visual Stuio Code e simili IDE di sviluppo ma possono risultare indigeste da configurare e non facilmenti trasportabili tra pc differenti casa/scuola.
Indice dei contenuti
1. Script Bash (Linux)
Crea un file template-html.sh con il seguente contenuto:
#!/bin/bash
echo -n "Inserisci il nome del progetto: "
read PROJECT_NAME
if [ -z "$PROJECT_NAME" ]; then
echo "Errore: il nome del progetto non può essere vuoto."
exit 1
fi
echo -n "Inserisci il percorso della destinazione: "
read DESTINATION
if [ ! -d "$DESTINATION" ]; then
echo "Errore: la destinazione indicata non esiste."
exit 1
fi
FULL_PATH="$DESTINATION/$PROJECT_NAME"
mkdir -p "$FULL_PATH/css" "$FULL_PATH/js" "$FULL_PATH/img"
touch "$FULL_PATH/css/style.css" "$FULL_PATH/js/script.js"
cat <<EOL > "$FULL_PATH/index.html"
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/style.css" rel="stylesheet">
<title>Document</title>
</head>
<body>
<script src="js/script.js"></script>
</body>
</html>
EOL
echo "Struttura creata in $FULL_PATH"
Rendi eseguibile lo script o con interfaccia grafica col tasto destro sul file o da console con:
chmod +x setup_progetto.sh
./template-html.sh
oppure
sh template-html.sh2. Script Batch DOS (Windows)
Crea un file template-html.bat partendo da un file di testo/blocco note modificando l’estensione da .txt a .bat.
@echo off
set /p PROJECT_NAME=Inserisci il nome del progetto:
if "%PROJECT_NAME%"=="" (
echo Errore: il nome del progetto non puo' essere vuoto.
goto end
)
set /p DESTINATION=Inserisci il percorso della destinazione:
if not exist "%DESTINATION%" (
echo Errore: destinazione non trovata.
goto end
)
set FULL_PATH=%DESTINATION%\%PROJECT_NAME%
mkdir "%FULL_PATH%\css" "%FULL_PATH%\js" "%FULL_PATH%\img"
type nul > "%FULL_PATH%\css\style.css"
type nul > "%FULL_PATH%\js\script.js"
(echo ^<!DOCTYPE html^>
echo ^<html lang="it"^>
echo ^<head^>
echo ^<meta charset="UTF-8"^>
echo ^<meta name="viewport" content="width=device-width, initial-scale=1.0"^>
echo ^<link href="css/style.css" rel="stylesheet"^>
echo ^<title^>Document^</title^>
echo ^</head^>
echo ^<body^>
echo ^<script src="js/script.js"^>^</script^>
echo ^</body^>
echo ^</html^>) > "%FULL_PATH%\index.html"
echo Struttura creata in %FULL_PATH%.
:end
pause
Eseguilo facendo doppio click. In alcune versioni di Windows o antivirus potrebbe segnala la possibilità che sia un virus.
3. Versione Python con GUI (Tkinter)
Installa il pacchetto Tkinter e le sue dipendenze se già non lo hai fatto(Ubuntu/Debian) :
sudo apt install python3-tk
Crea un file template-html.py con un editor di testo o IDE a piacere come Visual Studio Code:
import os
import tkinter as tk
from tkinter import filedialog, messagebox
class ProjectCreatorApp:
def __init__(self, root):
self.root = root
self.root.title("Creazione progetto web")
self.root.geometry("450x200")
tk.Label(root, text="Nome progetto:").pack(pady=(15, 5))
self.project_name_entry = tk.Entry(root, width=50)
self.project_name_entry.pack()
tk.Label(root, text="Destinazione:").pack(pady=(10, 5))
frame = tk.Frame(root)
frame.pack()
self.destination_entry = tk.Entry(frame, width=40)
self.destination_entry.pack(side=tk.LEFT, padx=(0,5))
browse_button = tk.Button(frame, text="Sfoglia", command=self.browse_destination)
browse_button.pack(side=tk.LEFT)
create_button = tk.Button(root, text="Crea Struttura", command=self.create_structure)
create_button.pack(pady=15)
def browse_destination(self):
folder_selected = filedialog.askdirectory(initialdir=os.getcwd())
if folder_selected:
self.destination_entry.delete(0, tk.END)
self.destination_entry.insert(0, folder_selected)
def create_structure(self):
name = self.project_name_entry.get().strip()
dest = self.destination_entry.get().strip()
if not name or not dest or not os.path.isdir(dest):
messagebox.showerror("Errore", "Nome o destinazione non validi.")
return
path = os.path.join(dest, name)
os.makedirs(os.path.join(path, "css"), exist_ok=True)
os.makedirs(os.path.join(path, "js"), exist_ok=True)
os.makedirs(os.path.join(path, "img"), exist_ok=True)
open(os.path.join(path, "css/style.css"), "a").close()
open(os.path.join(path, "js/script.js"), "a").close()
with open(os.path.join(path, "index.html"), "w") as f:
f.write("""<!DOCTYPE html><html lang=\"it\"><head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width\">
<link href=\"css/style.css\" rel=\"stylesheet\">
<title>Document</title></head><body>
<script src=\"js/script.js\"></script></body></html>""")
messagebox.showinfo("Successo", f"Struttura creata in:\n{path}")
root = tk.Tk()
app = ProjectCreatorApp(root)
root.mainloop()
Per seguirlo in una shell digita:
python template-html.pyPotrebbe essere più produttivo creare un eseguibile cliccabile sia Windows/Linux con la libreria PyInstaller. Per brevità non inseriamo qui la guida completa come procedere ma il imitiamo a segnalare il comando utile. Va controllato a dovere che il setup del vostro pc o ambiente di sviluppo abbia tutte le librerie necessarie tkinter e python per creare le librerie condivise .so necessarie. Alternativa potrebbe essere non inserireil parametro –onefile ed ottenere comunque una cartella di lavoro con tutto il necessario all’esecuzione, solo un po’ più scomodo.
pyinstaller --onefile --windowed --icon=icona.ico html.pyConclusioni
Grazie a questi script puoi velocizzare il tuo flusso di lavoro creando rapidamente strutture per nuovi progetti web. Personalizzali in base alle tue esigenze, file o cartelle e buona programmazione! Ti consiglio di inserirteli in una cartella sia sul pc dove lavori abitualmente, sia in un Drive/Cloud online per averli sempre a portata di mano.
(Articolo realizzato con l’ausilio di IA e supervisione umana)
Ultima modifica 15 Aprile 2025




