Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Functions unterstützt mehrere Build-Optionen, um Ihre TypeScript-Apps in Azure zu veröffentlichen. Wählen Sie Ihre Build-Methode basierend auf Ihrer lokalen Umgebung, App-Abhängigkeiten, Anforderungen an die TypeScript-Kompilierung und Laufzeitbedarf.
Wahl einer Baumethode
| Faktor | Lokale Erstellung (empfohlen) | Fernbau |
|---|---|---|
| Am besten geeignet für: | Komplexe Builds, Monorepos, benutzerdefinierte Werkzeuge | Einfache Projekte, schnelle Deployments |
| Paketgröße | Größer (einschließlich node_modules) |
Kleiner (Abhängigkeiten installiert in Azure) |
| TypeScript-Kompilierung | Du kompilierst lokal | Azure kompiliert automatisch |
| Native binäre Kompatibilität | Sie müssen die Zielarchitektur abgleichen | Automatisch verarbeitet (Linux x64) |
| Risiko einer Zeitüberschreitung beim Build | Keine (läuft auf deinem Rechner) | Möglich für große Abhängigkeitsmengen |
| Steuerung | Vollständig (beliebiges Build-Tool, Bundler oder Optimierer) | Beschränkt auf Plattform-Standardeinstellungen |
Für private NPM-Pakete oder benutzerdefinierte Registrierungen siehe Benutzerdefinierte Abhängigkeiten.
Paketiere deine App für die Bereitstellung
Wenn Sie Ihre TypeScript-Funktions-App auf Azure bereitstellen, muss Ihr Bereitstellungspaket folgende Anforderungen erfüllen:
JavaScript-Ausgabe erforderlich: Azure Functions führt JavaScript aus, daher muss TypeScript vor oder während der Bereitstellung kompiliert werden.
Stammebene
host.json: Stellen Sie sicher, dass sich eine einzelnehost.jsonDatei im Stammverzeichnis des Bereitstellungspakets befindet und nicht in einem Unterordner geschachtelt ist.package.jsonmainFeld: Die Funktionslaufzeit liest dieses Feld beim Start, um Ihre Funktionen zu finden und zu indexieren. Es muss auf deinen kompilierten JavaScript-Einstiegspunkt verweisen (zum Beispiel,dist/src/index.js).Entwicklungsdateien ausschließen: Verwenden Sie eine
.funcignoreDatei, um unnötige Dateien aus der Bereitstellung auszuschließen, wie in diesem Beispiel:.git/ .vscode/ local.settings.json test/ .env tsconfig.json src/ node_modules/
Behalte auch diese Abwägungen bei der Planung deines Einsatzes im Hinterkopf:
- Die Build-Umgebung muss mit der Produktion übereinstimmen: Abhängigkeiten von nativen Binärdateien müssen für die Linux-x64-Architektur erstellt werden. Der Remote-Build übernimmt dies automatisch; Für den lokalen Build sollten Sie Docker oder eine containerisierte Build-Umgebung verwenden.
- Die Größe des Deployment-Pakets beeinflusst den Cold Start: Große Abhängigkeitssätze erhöhen die Cold-Start-Latenz, da die Laufzeit jede Datei einzeln laden muss. Wenn Sie Ihre App mit Tools wie esbuild oder webpack in weniger Dateien bündeln, kann das die Startzeit erheblich verkürzen.
- Der entfernte Build hat Timeout-Limits: Wenn die Installation von Abhängigkeiten oder die TypeScript-Kompilierung die Plattformgrenzen überschreitet, scheitert der Build. Nutze einen lokalen Build mit vorgefertigten Abhängigkeiten für große Projekte.
- Die Modulinitialisierung hat Zeitbegrenzungen: Node.js Modullade- und Funktionsindexierung während des Starts sind zeitlich begrenzt. Reduziere oberste Importe oder nutze dynamische Importe, wenn möglich.
Lokaler Build
Wenn du keinen entfernten Build explizit anforderst, installiert dein Rechner Abhängigkeiten und kompiliert TypeScript. Anschließend paketierst und deployest du das gesamte kompilierte Projekt und die Abhängigkeiten lokal in deine Funktions-App.
Der lokale Build führt zu einem größeren Paket-Upload, gibt dir aber die vollständige Kontrolle über den Build-Prozess und stellt die Kompatibilität mit deiner Entwicklungsumgebung sicher.
Für TypeScript-Projekte, die lokalen Build verwenden:
- Prekompilieren Sie TypeScript: Kompilieren Sie Ihren TypeScript-Code lokal vor der Bereitstellung.
-
Abhängigkeiten installieren: Führen Sie
npm installoderyarn installaus, um die Abhängigkeiten lokal zu installieren. - Build-Verifikation: Stellen Sie sicher, dass Ihre Build-Ausgaben in Ihrer lokalen Umgebung korrekt funktionieren.
- Komplizierte Ausgabe deployen: Das kompilierte JavaScript zusammen mit Abhängigkeiten bereitstellen.
Beispiel-Build-Befehle für lokalen Builds:
# Install dependencies
npm install
# Compile TypeScript
npm run build
# or
tsc
# Deploy with local build (no remote compilation)
func azure functionapp publish <APP_NAME> --no-build
Du kannst die folgenden Tools so konfigurieren, dass sie den lokalen Build verwenden:
-
Azure Functions Core Tools: Verwenden Sie
func azure functionapp publishmit der--no-build-Flagge. -
AZ CLI:
az functionapp deployment source config-zip -
Kontinuierliche Bereitstellung mithilfe von GitHub Actions: Legen Sie den Parameter
remote-buildauffalsefür den Flex Consumption plan fest oder legen Sie sowohlscm-do-build-during-deploymentals auchenable-oryx-buildauffalsefür Dedicated plans fest.
Remotebuild
Wenn Sie Remote Build verwenden, übernimmt die Functions-Plattform die Paketinstallation, die TypeScript-Kompilierung und stellt die Kompatibilität mit der entfernten Laufzeitumgebung sicher.
Mit Remote Build erhält man ein kleineres Deployment-Paket, weil man keine JavaScript-Dateien einfügen node_modules oder kompilieren muss.
Wenn Sie TypeScript-Projekte per Remote-Build bereitstellen:
-
Automatische Erkennung: Die Plattform erkennt TypeScript-Projekte durch das Vorhandensein von
tsconfig.json. - Kompilierung: Die Plattform kompiliert TypeScript-Dateien mithilfe der TypeScript-Konfiguration Ihres Projekts.
-
Installation von Abhängigkeiten: Die Plattform installiert sowohl
dependenciesals auchdevDependenciesvonpackage.json, da Build-Zeit-Pakete wietypescriptfür die Kompilierung benötigt werden. - Optimierung: Die Plattform enthält nur notwendige Dateien im endgültigen Bereitstellungspaket.
Sie können Remote Build verwenden, wenn Sie Ihre TypeScript-App veröffentlichen, indem Sie diese Tools nutzen:
-
Azure Functions Core Tools: Der Befehl
func azure functionapp publisherfordert das Flag--build-remote=true, um den Remote-Build für Node.js-Apps zu aktivieren. -
AZ CLI:
az functionapp deployment source config-zipbenötigt das--build-remote=trueFlag, um den Remote-Build für Node.js Apps zu ermöglichen. - Visual Studio Code: Der Azure Functions: Deploy to Azure... Befehl verwendet immer einen Remote-Build.
-
Kontinuierliche Übermittlung mithilfe von GitHub-Aktionen: Die Azure/functions-action@v1-Aktion verwendet Remotebuild , wenn der
remote-buildParameter für den Flex-Verbrauchsplan festgelegttrueist oder wannscm-do-build-during-deploymentundenable-oryx-buildfür dedizierte Pläne festgelegttrueist.
Informationen zum Aktivieren des Remotebuilds für andere Szenarien, z. B. die kontinuierliche Übermittlung mit Azure-Pipelines, finden Sie unter Aktivieren des Remotebuilds.
Benutzerdefinierte Abhängigkeiten
Azure Functions unterstützt benutzerdefinierte und private npm-Abhängigkeiten durch die Verwendung benutzerdefinierter npm-Register, privater oder lokaler Pakete.
Remote-Build mit benutzerdefinierter NPM-Registry
Wenn deine privaten Pakete in einem benutzerdefinierten NPM-Register verfügbar sind, kannst du nach der Konfiguration des Registry-Standorts einen Remote-Build anfordern.
Um eine benutzerdefinierte Registry zu verwenden, erstelle eine .npmrc Datei in deinem Projektroot:
registry=https://your-private-registry.com/
//your-private-registry.com/:_authToken=${NPM_TOKEN}
Lokale Pakete und private Module
Lokale Pakete und private Module werden beim Bau von TypeScript Azure Function-Apps unterstützt.
Um lokale Pakete mit Remote-Build einzubeziehen, referenziere sie in deiner package.json Datei:
{
"dependencies": {
"@azure/functions": "^4.0.0",
"my-private-package": "file:../my-private-package",
"another-local-package": "file:./packages/local-lib"
}
}
Um lokale Abhängigkeiten mit lokalem Build einzubeziehen, installieren Sie die Abhängigkeiten lokal und stellen Sie sie mit deaktiviertem Remotebuild bereit:
# Install all dependencies including local ones
npm install
# Build your TypeScript project
npm run build
# Publish with local build
func azure functionapp publish <APP_NAME> --no-build
Workspace-Pakete verwenden
Für Monorepo- oder npm-Arbeitsbereiche referenzieren Sie gemeinsam genutzte Pakete, indem Sie npm-Arbeitsbereiche in Ihrer package.json Datei verwenden:
{
"name": "functions-app",
"dependencies": {
"@azure/functions": "^4.0.0",
"@mycompany/shared-lib": "workspace:*"
},
"workspaces": [
"packages/*"
]
}
Vor der Bereitstellung paketieren
Verwenden Sie Bündelwerkzeuge wie Webpack, esbuild oder Rollup, um vor der Bereitstellung ein einziges Bundle zu erstellen:
# Bundle your application
npm run bundle
# Deploy the bundled output
func azure functionapp publish <APP_NAME> --no-build