Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure Functions obsługuje wiele opcji tworzenia do publikowania aplikacji TypeScript w Azure. Wybierz metodę budowania w zależności od lokalnego środowiska, zależności aplikacji, wymagań kompilacji TypeScript oraz potrzeb związanych z uruchomieniem.
Wybór metody budowy
| Czynnik | Lokalna budowa (zalecana) | Zdalna budowa |
|---|---|---|
| Najlepsze dla | Złożone konstrukcje, monorepo, narzędzia niestandardowe | Proste projekty, szybkie wdrożenie |
| Rozmiar pakietu | Większe (obejmuje node_modules) |
Mniejsze (zależności zainstalowane na platformie Azure) |
| Kompilacja TypeScript | Kompilujesz lokalnie | Azure kompiluje automatycznie |
| Natywna zgodność binarna | Musisz dopasować się do docelowej architektury | Obsługiwane automatycznie (Linux x64) |
| Ryzyko przekroczenia limitu czasu kompilacji | Brak (działa na twoim komputerze) | Możliwe dla dużych zbiorów zależności |
| Control | Pełne (dowolne narzędzie do budowania, bundler, optymalizator) | Ograniczone do domyślnych ustawień platformy |
W przypadku prywatnych pakietów npm lub rejestrów niestandardowych, zobacz Zależności niestandardowe.
Pakuj swoją aplikację do wdrożenia
Podczas wdrażania aplikacji funkcjonalnej TypeScript na Azure, Twój pakiet wdrożeniowy musi spełniać następujące wymagania:
Wymagane wyjście JavaScript: Azure Functions działa na JavaScript, więc TypeScript musi być skompilowany przed lub w trakcie wdrożenia.
Poziom
host.jsongłówny: upewnij się, że pojedynczyhost.jsonplik znajduje się w katalogu głównym pakietu wdrożeniowego, a nie jest zagnieżdżony w podfolderze.package.jsonmainpole: Runtime Functions odczytuje to pole przy starcie, aby zlokalizować i zindeksować Twoje funkcje. Musi wskazywać Twój skompilowany punkt wejścia JavaScript (na przykładdist/src/index.js).Wyklucz pliki deweloperskie: Użyj pliku
.funcignore, aby wykluczyć niepotrzebne pliki z wdrożenia, jak w tym przykładzie:.git/ .vscode/ local.settings.json test/ .env tsconfig.json src/ node_modules/
Miej też na uwadze następujące kompromisy planując swoją misję:
- Środowisko budowania musi odpowiadać produkcji: Zależności z natywnymi binarnymi plikami muszą być zbudowane dla architektury x64 Linuksa. Zdalna budowa obsługuje to automatycznie; do lokalnej budowy rozważ użycie Dockera lub środowiska budowania kontenerowego.
- Rozmiar pakietu wdrożenia wpływa na zimny start: Duże zestawy zależności zwiększają opóźnienia zimnego startu, ponieważ czas działania musi ładować każdy plik osobno. Łączenie aplikacji w mniej plikach za pomocą narzędzi takich jak esbuild czy webpack może znacznie skrócić czas uruchamiania.
- Zdalna budowa ma limity czasowe: jeśli instalacja zależności lub kompilacja TypeScript przekroczy limity platformy, kompilacja się nie udaje. Używaj lokalnej wersji z gotowymi zależnościami do dużych projektów.
- Inicjalizacja modułów ma ograniczenia czasowe: Node.js ładowanie modułu i indeksowanie funkcji podczas uruchamiania są ograniczone czasowo. Ograniczaj importy na najwyższym poziomie lub korzystaj z importów dynamicznych, gdy to możliwe.
Kompilacja lokalna
Jeśli wyraźnie nie zażądasz zdalnego kompilowania, na Twoim komputerze zostaną zainstalowane zależności i skompilowany kod TypeScript. Następnie pakujesz i wdrażasz cały skompilowany projekt oraz zależności lokalnie do swojej aplikacji funkcyjnej.
Lokalna kompilacja skutkuje przesłaniem większego pakietu, ale zapewnia pełną kontrolę nad procesem kompilacji i gwarantuje zgodność ze środowiskiem programistycznym.
Dla projektów TypeScript korzystających z lokalnej budowy:
- Prekompilacja TypeScript: Skompiluj swój kod TypeScript lokalnie przed wdrożeniem.
-
Instaluj zależności: Uruchamiaj
npm installlubyarn installinstaluj zależności lokalnie. - Weryfikacja budowy: Upewnij się, że Twoje wyniki budowania działają poprawnie w lokalnym środowisku.
- Wdrożenie skompilowanego wyjścia: Wdrożenie skompilowanego JavaScriptu wraz z zależnościami.
Przykładowe polecenia budowania dla lokalnej budowy:
# 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
Możesz skonfigurować następujące narzędzia do korzystania z lokalnej budowy:
-
Podstawowe narzędzia usługi Azure Functions: użyj
func azure functionapp publishz flagą--no-build. -
AZ CLI:
az functionapp deployment source config-zip -
Ciągłe dostarczanie za pomocą GitHub Actions: ustaw parametr
remote-buildnafalsedla planu Flex Consumption lub ustawscm-do-build-during-deploymentienable-oryx-buildnafalsedla planów dedykowanych.
Kompilacja zdalna
Podczas korzystania z remote build platforma Functions obsługuje instalację pakietów, kompilację TypeScript oraz zapewnia kompatybilność ze środowiskiem zdalnego uruchomienia.
Korzystając z remote build, otrzymujesz mniejszy pakiet wdrożenia, ponieważ nie musisz dołączać node_modules ani kompilować plików JavaScript.
Gdy wdrażasz projekty TypeScript za pomocą zdalnej budowy:
-
Automatyczne wykrywanie: Platforma wykrywa projekty TypeScript na podstawie obecności .
tsconfig.json - Kompilacja: Platforma kompiluje pliki TypeScript, wykorzystując konfigurację TypeScript Twojego projektu.
-
Instalacja zależności: Platforma instaluje zarówno
dependencies, jak idevDependencieszpackage.json, ponieważ do kompilacji potrzebne są pakiety używane na etapie kompilacji, takie jaktypescript. - Optymalizacja: Platforma zawiera tylko niezbędne pliki w finalnym pakiecie wdrożenia.
Możesz korzystać z remote build, publikując aplikację TypeScript, korzystając z tych narzędzi:
-
Azure Functions Core Tools: polecenie
func azure functionapp publishwymaga, aby flaga--build-remote=trueumożliwiła zdalne budowanie Node.js aplikacji. -
AZ CLI:
az functionapp deployment source config-zipwymaga flagi--build-remote=true, aby włączyć zdalne kompilowanie dla aplikacji Node.js. - Visual Studio Code: polecenie Azure Functions: Deploy to Azure... zawsze używa kompilacji zdalnej.
-
Ciągłe dostarczanie przy użyciu GitHub Actions: akcja Azure/functions-action@v1 używa kompilacji zdalnej, gdy parametr
remote-buildjest ustawiony natruedla planu Flex Consumption lub gdyscm-do-build-during-deploymentienable-oryx-buildsą ustawione natruedla planów dedykowanych.
Aby włączyć kompilację zdalną dla innych scenariuszy, takich jak ciągłe dostarczanie za pomocą usługi Azure Pipelines, zobacz Włączanie kompilacji zdalnej.
Zależności niestandardowe
Azure Functions obsługuje niestandardowe i prywatne zależności npm poprzez wykorzystanie niestandardowych rejestrów npm, pakietów prywatnych lub pakietów lokalnych.
Zdalna kompilacja z użyciem własnego rejestru npm
Gdy twoje prywatne pakiety są dostępne w niestandardowym rejestrze npm, możesz poprosić o zdalną budowę po skonfigurowaniu lokalizacji rejestru.
Aby użyć własnego rejestru, utwórz plik .npmrc w katalogu głównym projektu:
registry=https://your-private-registry.com/
//your-private-registry.com/:_authToken=${NPM_TOKEN}
Pakiety lokalne i prywatne moduły
Pakiety lokalne i prywatne moduły są obsługiwane podczas tworzenia aplikacji TypeScript Azure Function.
Aby uwzględnić lokalne pakiety za pomocą remote build, odwołaj się do nich w pliku package.json:
{
"dependencies": {
"@azure/functions": "^4.0.0",
"my-private-package": "file:../my-private-package",
"another-local-package": "file:./packages/local-lib"
}
}
Aby uwzględnić lokalne zależności przy użyciu lokalnej budowy, zainstaluj je lokalnie i wdroż z wyłączonym zdalnym buildem:
# 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
Korzystaj z pakietów workspace
W przypadku konfiguracji monorepo lub obszarów roboczych npm odwołuj się do współdzielonych pakietów przy użyciu obszarów roboczych npm w pliku package.json:
{
"name": "functions-app",
"dependencies": {
"@azure/functions": "^4.0.0",
"@mycompany/shared-lib": "workspace:*"
},
"workspaces": [
"packages/*"
]
}
Pakiet przed wdrożeniem
Użyj narzędzi do bundlingu, takich jak webpack, esbuild czy rollup, aby stworzyć jeden pakiet przed wdrożeniem:
# Bundle your application
npm run bundle
# Deploy the bundled output
func azure functionapp publish <APP_NAME> --no-build