Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure Functions ondersteunt meerdere build-opties om je TypeScript-apps naar Azure te publiceren. Kies je buildmethode op basis van je lokale omgeving, app-afhankelijkheden, TypeScript-compilatievereisten en runtime-vereisten.
Het kiezen van een bouwmethode
| Factor | Lokale compilatie (aanbevolen) | Externe bouw |
|---|---|---|
| Geschikt voor | Complexe buildprocessen, monorepo's, maatwerktools | Eenvoudige projecten, snelle implementaties |
| Pakketgrootte | Groter (inclusief node_modules) |
Kleiner (afhankelijkheden in Azure geïnstalleerd) |
| TypeScript-compilatie | Je compileert lokaal | Azure compileert automatisch |
| Natieve binaire compatibiliteit | Je moet overeenkomen met de doelarchitectuur | Automatisch afgehandeld (Linux x64) |
| Risico op buildtime-out | Geen (draait op je computer) | Mogelijk voor grote afhankelijkheidsverzamelingen |
| Control | Volledig (elke buildtool, bundler, optimizer) | Beperkt tot platformstandaardinstellingen |
Voor private npm-pakketten of aangepaste registers, zie Aangepaste afhankelijkheden.
Pak je app in voor uitrol
Bij het uitrollen van je TypeScript-functieapp naar Azure moet je implementatiepakket aan de volgende eisen voldoen:
JavaScript-uitvoer vereist: Azure Functions draait JavaScript, dus TypeScript moet vóór of tijdens de implementatie worden gecompileerd.
Hoofdniveau
host.json: zorg ervoor dat éénhost.jsonbestand zich in de hoofdmap van het implementatiepakket bevindt, niet genest in een submap.package.jsonmainveld: De Functions-runtime leest dit veld bij het opstarten om je functies te vinden en te indexeren. Het moet wijzen op je gecompileerde JavaScript-instappunt (bijvoorbeeld,dist/src/index.js).Ontwikkelingsbestanden uitsluiten: Gebruik een
.funcignorebestand om onnodige bestanden uit te sluiten van deployment, zoals in dit voorbeeld:.git/ .vscode/ local.settings.json test/ .env tsconfig.json src/ node_modules/
Houd ook deze afwegingen in gedachten bij het plannen van je inzet:
- De bouwomgeving moet overeenkomen met de productie: Afhankelijkheden met native binaries moeten worden gebouwd voor de Linux x64-architectuur. Remote build regelt dit automatisch; Voor lokale builds kun je overwegen Docker of een containerized build environment te gebruiken.
- De grootte van het deployment-pakket beïnvloedt cold start: Grote afhankelijkheidssets verhogen cold start latentie omdat de runtime elk bestand afzonderlijk moet laden. Het bundelen van je app in minder bestanden met tools zoals esbuild of webpack kan de opstarttijd aanzienlijk verkorten.
- Voor externe builds gelden time-outlimieten: als de installatie van afhankelijkheden of de TypeScript-compilatie de platformlimieten overschrijdt, mislukt de build. Gebruik een lokale build met vooraf gebouwde afhankelijkheden voor grote projecten.
- Module-initialisatie kent tijdslimieten: Node.js module-laden en functieindexering tijdens het opstarten zijn tijdsgebonden. Verminder importen op topniveau of gebruik dynamische importen waar mogelijk.
Lokale versie
Als je niet expliciet een remote build aanvraagt, installeert je machine afhankelijkheden en compileert TypeScript. Vervolgens verpak en deploy je het gehele gecompileerde project en de afhankelijkheden lokaal naar je functie-app.
Lokale build resulteert in een grotere pakketupload, maar geeft je volledige controle over het buildproces en zorgt voor compatibiliteit met je ontwikkelomgeving.
Voor TypeScript-projecten die lokale builds gebruiken:
- Precompileer TypeScript: Compileer je TypeScript-code lokaal voordat je het uitrolt.
-
Afhankelijkheden installeren: Voer
npm installofyarn installuit om afhankelijkheden lokaal te installeren. - Verificatie van de build: Zorg ervoor dat de output van je build goed werkt in je lokale omgeving.
- Implementeer gecompileerde uitvoer: Implementeer de gecompileerde JavaScript-code samen met afhankelijkheden.
Voorbeeldcommando's voor een lokale build:
# 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
Je kunt de volgende tools configureren om lokale builds te gebruiken:
-
Azure Functions Core Tools: gebruiken
func azure functionapp publishmet de--no-buildvlag. -
AZ CLI:
az functionapp deployment source config-zip -
Continue levering met GitHub Actions: stel de
remote-buildparameter in opfalsevoor het Flex Consumption-plan of stelscm-do-build-during-deploymentenenable-oryx-buildin opfalsevoor Dedicated-plannen.
Externe build
Wanneer je remote build gebruikt, verzorgt het Functions-platform de pakketinstallatie, TypeScript-compilatie en zorgt het voor compatibiliteit met de remote runtime-omgeving.
Door remote build te gebruiken, krijg je een kleiner deploymentpakket omdat je geen JavaScript-bestanden hoeft toe te voegen node_modules of te compileren.
Wanneer je TypeScript-projecten uitrolt met behulp van remote build:
-
Automatische detectie: Het platform detecteert TypeScript-projecten door de aanwezigheid van
tsconfig.json. - Compilatie: Het platform compileert TypeScript-bestanden met behulp van de TypeScript-configuratie van je project.
-
Afhankelijkheidsinstallatie: Het platform installeert zowel
dependenciesalsdevDependenciesvanafpackage.json, aangezien build-time pakketten zoalstypescriptnodig zijn voor compilatie. - Optimalisatie: Het platform bevat alleen noodzakelijke bestanden in het uiteindelijke deploymentpakket.
Je kunt remote build gebruiken wanneer je je TypeScript-app publiceert met behulp van deze tools:
-
Azure Functions Core Tools: het
func azure functionapp publishcommando vereist de--build-remote=truevlag om remote build voor Node.js apps mogelijk te maken. -
AZ CLI:
az functionapp deployment source config-zipvereist de--build-remote=truevlag om remote build voor Node.js apps mogelijk te maken. - Visual Studio Code: de Azure Functions: Implementeren in Azure... opdracht maakt altijd gebruik van een externe build.
-
Continue levering met behulp van GitHub Actions: de Azure/functions-action@v1-actie maakt gebruik van externe build wanneer de
remote-buildparameter is ingesteldtruevoor het Flex Consumption-abonnement of wanneerscm-do-build-during-deploymentenenable-oryx-buildzijn ingesteldtrueop Toegewezen abonnementen.
Zie Remote Build inschakelen voor andere scenario's, zoals Continue levering met Azure-pipelines.
Aangepaste afhankelijkheden
Azure Functions ondersteunt aangepaste en private npm-afhankelijkheden door gebruik te maken van aangepaste npm-registraties, private pakketten of lokale pakketten.
Externe build met aangepaste npm-registratie
Wanneer je privépakketten beschikbaar zijn in een aangepaste npm-register, kun je na het configureren van de registerlocatie een externe build aanvragen.
Om een aangepaste registry te gebruiken, maak je een .npmrc bestand aan in je projectroot:
registry=https://your-private-registry.com/
//your-private-registry.com/:_authToken=${NPM_TOKEN}
Lokale pakketten en privémodules
Lokale pakketten en privémodules worden ondersteund bij het bouwen van TypeScript Azure Function-apps.
Om lokale pakketten met remote build op te nemen, verwijs je naar deze in je package.json bestand:
{
"dependencies": {
"@azure/functions": "^4.0.0",
"my-private-package": "file:../my-private-package",
"another-local-package": "file:./packages/local-lib"
}
}
Om lokale afhankelijkheden met lokale build te verwerken, installeer je de afhankelijkheden lokaal en deploy je met de externe build uitgeschakeld:
# 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
Gebruik workspace-pakketten
Voor monorepo- of npm-werkruimteopstellingen raadpleeg gedeelde pakketten door gebruik te maken van npm-werkruimtes in je package.json bestand:
{
"name": "functions-app",
"dependencies": {
"@azure/functions": "^4.0.0",
"@mycompany/shared-lib": "workspace:*"
},
"workspaces": [
"packages/*"
]
}
Bundelen vóór implementatie
Gebruik bundlingtools zoals webpack, esbuild of rollup om één bundel te maken vóór de uitrol:
# Bundle your application
npm run bundle
# Deploy the bundled output
func azure functionapp publish <APP_NAME> --no-build