How It Works
Two steps. That's it.
Pikku generates the Azure Functions code. You deploy it with the Azure CLI. No runtime lock-in, no magic — just generated code you can inspect and customize.
Generate function code
Run pikku deploy apply --provider azure. Pikku scans your functions and generates Azure Functions v4 code, host.json, and local settings into .deploy/azure/.
Deploy with Azure CLI
cd into .deploy/azure and run func azure functionapp publish <app-name>. Azure's tooling handles packaging, uploading, and provisioning.
Local dev with func start
Run func start from the .deploy/azure directory to test locally with the Azure Functions Core Tools emulator. Same triggers, same runtime.
# Generate Azure Functions code
pikku deploy apply --provider azure
# Deploy to your Function App
cd .deploy/azure
func azure functionapp publish my-function-app
# Generate Azure Functions code
pikku deploy apply --provider azure
# Start local dev server
cd .deploy/azure
func start
What Gets Generated
Real Azure code. Not a wrapper.
Pikku generates standard Azure Functions v4 Node.js code. You can read it, modify it, and deploy it with the tools you already know.
host.json
Global Azure Function App configuration — runtime version, extension bundles, and logging settings.
local.settings.json
Local development settings — storage connection strings, runtime config, and environment variables.
Per-function entry points
Each function gets an Azure Functions v4 handler using app.http(), app.storageQueue(), or app.timer() from the Node.js programming model.
Environment variables
Function URLs, queue connection strings, and any config your functions need — all wired up automatically.
import { app } from '@azure/functions'
import { pikkuHTTPFunctionHandler } from './pikku-azure-http.js'
import { pikkuQueueHandler } from './pikku-azure-queue.js'
import { pikkuTimerHandler } from './pikku-azure-timer.js'
// HTTP triggers
app.http('getUser', {
methods: ['GET'],
route: 'users/{id}',
authLevel: 'anonymous',
handler: pikkuHTTPFunctionHandler
})
// Storage Queue triggers
app.storageQueue('processOrder', {
queueName: 'orders',
connection: 'AzureWebJobsStorage',
handler: pikkuQueueHandler
})
// Timer triggers
app.timer('dailyCleanup', {
schedule: '0 0 3 * * *',
handler: pikkuTimerHandler
})
HTTP Triggers
REST endpoints via app.http() — GET, POST, PUT, DELETE with route params.
Storage Queue Triggers
Background jobs via app.storageQueue() — process messages from Azure Storage Queues.
Timer Triggers
Scheduled tasks via app.timer() — CRON expressions for recurring jobs.
Prerequisites
What you need before deploying.
A couple of installs and an Azure account. Nothing exotic.
Install the deploy package
Azure Function App
You need an Azure account with a Function App already created.
Azure Functions Core Tools
Ship to Azure in minutes
Generate. Deploy. Done. Your Pikku functions running on Azure Functions with zero boilerplate.