Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure Functions prend en charge plusieurs options de compilation pour publier vos applications TypeScript sur Azure. Choisissez votre méthode de compilation en fonction de votre environnement local, des dépendances de l’application, des exigences de compilation TypeScript et des besoins en temps réel.
Choisir une méthode de construction
| Facteur | Construction locale (recommandée) | Construction à distance |
|---|---|---|
| Idéal pour | Compilations complexes, monorepos, outils personnalisés | Projets simples, déploiements rapides |
| Taille du package | Plus grand (comprend node_modules) |
Plus petits (dépendances installées dans Azure) |
| Compilation de TypeScript | Vous compilez localement | Azure compile automatiquement |
| Compatibilité binaire native | Vous devez correspondre à l’architecture cible | Géré automatiquement (Linux x64) |
| Risque de délai de construction | Aucun (fonctionne sur votre machine) | Possible pour de grands ensembles de dépendances |
| Contrôle | Complet (tout outil de build, bundler, optimiseur) | Limité aux paramètres par défaut de la plateforme |
Pour les packages npm privés ou les registres personnalisés, voir Dépendances personnalisées.
Emballez votre application pour le déploiement
Lors du déploiement de votre application de fonction TypeScript sur Azure, votre package de déploiement doit répondre à ces exigences :
Sortie JavaScript requise : Azure Functions exécute JavaScript, donc TypeScript doit être compilé avant ou pendant le déploiement.
Niveau
host.jsonracine : vérifiez qu’un seulhost.jsonfichier se trouve à la racine du package de déploiement, et non imbriqué dans un sous-dossier.package.jsonmainchamp : L’exécution des fonctions lit ce champ au démarrage pour localiser et indexer vos fonctions. Il doit pointer vers votre point d’entrée JavaScript compilé (par exemple,dist/src/index.js).Exclure les fichiers de développement : Utilisez un
.funcignorefichier pour exclure les fichiers inutiles du déploiement, comme dans cet exemple :.git/ .vscode/ local.settings.json test/ .env tsconfig.json src/ node_modules/
Gardez également ces compromis à l’esprit lors de la planification de votre déploiement :
- L’environnement de construction doit correspondre à la production : les dépendances avec des binaires natifs doivent être construites pour l’architecture Linux x64. La compilation à distance gère cela automatiquement ; pour une compilation locale, envisagez d’utiliser Docker ou un environnement de compilation conteneurisé.
- La taille du package de déploiement influence le démarrage à froid : de grands ensembles de dépendances augmentent la latence de démarrage à froid car l’exécution doit charger chaque fichier individuellement. Regrouper votre application dans moins de fichiers avec des outils comme esbuild ou webpack peut réduire considérablement le temps de démarrage.
- La compilation à distance a des limites de délai : si l’installation de dépendances ou la compilation TypeScript dépasse les limites de la plateforme, la compilation échoue. Utilisez une compilation locale avec des dépendances préconstruites pour les grands projets.
- L’initialisation des modules a des limites de temps : Node.js chargement des modules et l’indexation des fonctions au démarrage sont limités dans le temps. Réduisez les importations de haut niveau ou utilisez des importations dynamiques lorsque possible.
Build locale
Si vous ne demandez pas explicitement une compilation à distance, votre machine installe des dépendances et compile TypeScript. Vous emballez ensuite et déployez localement l’ensemble du projet compilé et des dépendances dans votre application de fonctions.
La compilation locale entraîne un upload de paquet plus volumineux mais vous donne un contrôle total sur le processus de compilation et garantit la compatibilité avec votre environnement de développement.
Pour les projets TypeScript utilisant une compilation locale :
- Precompile TypeScript : Compile localement ton code TypeScript avant le déploiement.
-
Installer les dépendances : Exécuter
npm installouyarn installinstaller les dépendances localement. - Vérification des compilations : Assurez-vous que vos sorties de compilation fonctionnent correctement dans votre environnement local.
- Déploie la sortie compilée : Déploie le JavaScript compilé avec les dépendances.
Exemples de commandes de build pour une build locale :
# 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
Vous pouvez configurer les outils suivants pour utiliser la compilation locale :
-
Azure Functions Core Tools : utiliser
func azure functionapp publishavec l’indicateur--no-build. -
AZ CLI:
az functionapp deployment source config-zip -
Livraison continue à l’aide de GitHub Actions : définissez le
remote-buildparamètrefalsepour le plan Flex Consumption ou définissez les paramètresscm-do-build-during-deploymentetenable-oryx-buildsurfalsepour les plans dédiés.
Build distante
Lorsque vous utilisez la compilation à distance, la plateforme Functions gère l’installation des paquets, la compilation TypeScript et assure la compatibilité avec l’environnement d’exécution distant.
En utilisant la compilation à distance, vous obtenez un paquet de déploiement plus petit car vous n’avez pas besoin d’inclure node_modules ou de compiler des fichiers JavaScript.
Lorsque vous déployez des projets TypeScript en utilisant une compilation distante :
-
Détection automatique : La plateforme détecte les projets TypeScript par la présence de
tsconfig.json. - Compilation : La plateforme compile les fichiers TypeScript en utilisant la configuration TypeScript de votre projet.
-
Installation des dépendances : La plateforme installe à la fois
dependenciesetdevDependenciesà partir depackage.json, car des paquets nécessaires à la compilation, commetypescript, doivent aussi être installés. - Optimisation : La plateforme inclut uniquement les fichiers nécessaires dans le package de déploiement final.
Vous pouvez utiliser la compilation à distance lorsque vous publiez votre application TypeScript en utilisant ces outils :
-
Outils principaux d’Azure Functions : la commande
func azure functionapp publishnécessite l’indicateur--build-remote=truepour activer la compilation à distance pour les applications Node.js. -
CLI AZ :
az functionapp deployment source config-zipnécessite le drapeau--build-remote=truepour activer la compilation à distance pour Node.js applications. - Visual Studio Code : La commande Azure Functions : Déployer sur Azure... utilise toujours une build distante.
-
Livraison continue à l’aide de GitHub Actions : l’action Azure/functions-action@v1 utilise la build distante lorsque le
remote-buildparamètre est définitruepour le plan Flex Consumption ou quandscm-do-build-during-deploymentetenable-oryx-buildsont définistruepour les plans dédiés.
Pour activer la génération à distance pour d’autres scénarios, comme la livraison continue avec Azure Pipelines, consultez Activation de la build à distance.
Dépendances personnalisées
Azure Functions prend en compte les dépendances npm personnalisées et privées en utilisant des registres npm personnalisés, des paquets privés ou des paquets locaux.
Compilation à distance avec un registre npm personnalisé
Lorsque vos forfaits privés sont disponibles dans un registre npm personnalisé, vous pouvez demander une compilation à distance après avoir configuré l’emplacement du registre.
Pour utiliser un registre personnalisé, créez un .npmrc fichier dans la racine de votre projet :
registry=https://your-private-registry.com/
//your-private-registry.com/:_authToken=${NPM_TOKEN}
Paquets locaux et modules privés
Les packages locaux et les modules privés sont pris en charge lors de la création d’applications TypeScript Azure Function.
Pour inclure des paquets locaux utilisant la compilation à distance, référez-les dans votre package.json fichier :
{
"dependencies": {
"@azure/functions": "^4.0.0",
"my-private-package": "file:../my-private-package",
"another-local-package": "file:./packages/local-lib"
}
}
Pour inclure les dépendances locales via la compilation locale, installez les dépendances localement et déployez avec la compilation distante désactivée :
# 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
Utiliser des paquets d’espace de travail
Pour les configurations de monorepo ou d’espaces de travail npm, référencez les packages partagés en utilisant les espaces de travail npm dans votre package.json fichier :
{
"name": "functions-app",
"dependencies": {
"@azure/functions": "^4.0.0",
"@mycompany/shared-lib": "workspace:*"
},
"workspaces": [
"packages/*"
]
}
Bundle avant le déploiement
Utilisez des outils de regroupement comme webpack, esbuild ou rollup pour créer un bundle unique avant le déploiement :
# Bundle your application
npm run bundle
# Deploy the bundled output
func azure functionapp publish <APP_NAME> --no-build