Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Functions soporta múltiples opciones de compilación para publicar tus aplicaciones TypeScript en Azure. Elige tu método de compilación en función de tu entorno local, dependencias de la app, requisitos de compilación de TypeScript y necesidades de ejecución.
Elección de un método de construcción
| Factor | Montaje local (recomendado) | Montaje remoto |
|---|---|---|
| Más adecuado para | Compilaciones complejas, monorepos, herramientas personalizadas | Proyectos sencillos, despliegues rápidos |
| Tamaño de paquete | Más grande (incluye node_modules) |
Más pequeño (dependencias instaladas en Azure) |
| Compilación de TypeScript | Compilas localmente | Azure compila automáticamente |
| Compatibilidad binaria nativa | Debe coincidir con la arquitectura de destino | Gestionado automáticamente (Linux x64) |
| Riesgo de que se agote el tiempo de espera de la compilación | Ninguna (se ejecuta en tu equipo) | Posible para grandes conjuntos de dependencias |
| Supervisión | Completo (cualquier herramienta de compilación, bundler, optimizador) | Limitado a los valores predeterminados de la plataforma |
Para paquetes npm privados o registros personalizados, véase Dependencias personalizadas.
Empaqueta tu aplicación para su despliegue
Al desplegar tu aplicación de función TypeScript en Azure, tu paquete de despliegue debe cumplir con estos requisitos:
Se requiere salida de JavaScript: Azure Functions ejecuta JavaScript, por lo que TypeScript debe compilarse antes o durante el despliegue.
Nivel
host.jsonraíz: Asegúrese de que haya un solo archivohost.jsonen la raíz del paquete de implementación, no anidado en una subcarpeta.package.jsonmaincampo: El runtime de Funciones lee este campo al inicio para localizar e indexar tus funciones. Debe apuntar a tu punto de entrada compilado en JavaScript (por ejemplo,dist/src/index.js).Excluir archivos de desarrollo: Utiliza un
.funcignorearchivo para excluir archivos innecesarios del despliegue, como en este ejemplo:.git/ .vscode/ local.settings.json test/ .env tsconfig.json src/ node_modules/
Ten en cuenta también estas contrapartidas al planificar tu despliegue:
- El entorno de compilación debe coincidir con la producción: Las dependencias con binarios nativos deben construirse para la arquitectura Linux x64. La compilación remota gestiona esto automáticamente; para la compilación local, considera usar Docker o un entorno de compilación contenedorizado.
- El tamaño del paquete de despliegue afecta al inicio en frío: Los conjuntos de dependencias grandes aumentan la latencia de inicio en frío porque el tiempo de ejecución debe cargar cada archivo individualmente. Agrupar tu aplicación en menos archivos con herramientas como esbuild o webpack puede reducir significativamente el tiempo de arranque.
- La compilación remota tiene límites de tiempo de espera: si la instalación de dependencias o la compilación en TypeScript superan los límites de la plataforma, la compilación falla. Utiliza una compilación local con dependencias preconstruidas para proyectos grandes.
- La inicialización de módulos tiene límites de tiempo: Node.js carga de módulos e indexación de funciones durante el arranque están limitadas en tiempo. Reducir las importaciones de nivel superior o usar importaciones dinámicas cuando sea posible.
Compilación local
Si no solicitas explícitamente una compilación remota, tu máquina instala dependencias y compila TypeScript. Luego empaquetas y despliegas todo el proyecto compilado y las dependencias localmente en tu aplicación de funciones.
La compilación local da lugar a una subida de paquetes más grande, pero te da control total sobre el proceso de compilación y garantiza la compatibilidad con tu entorno de desarrollo.
Para proyectos TypeScript que usan compilación local:
- Precompilar TypeScript: Compila tu código TypeScript localmente antes del despliegue.
-
Instalar dependencias: Ejecuta
npm installoyarn installinstala dependencias localmente. - Verificación de compilaciones: Asegúrate de que tus salidas de compilación funcionen correctamente en tu entorno local.
- Desplegar la salida compilada: Desplegar el JavaScript compilado junto con las dependencias.
Ejemplos de comandos de compilación para compilación local:
# 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
Puedes configurar las siguientes herramientas para usar la compilación local:
-
Azure Functions Core Tools: use
func azure functionapp publishcon el indicador--no-build. -
AZ CLI:
az functionapp deployment source config-zip -
Entrega continua mediante Acciones de GitHub: establezca el parámetro
remote-buildafalsepara el plan Flex Consumption o establezcascm-do-build-during-deploymentyenable-oryx-buildafalsepara planes dedicados.
Compilación remota
Cuando usas la compilación remota, la plataforma Functions se encarga de la instalación de paquetes, la compilación de TypeScript y garantiza la compatibilidad con el entorno de ejecución remoto.
Al usar compilación remota, obtienes un paquete de despliegue más pequeño porque no necesitas incluir node_modules ni compilar archivos JavaScript.
Cuando despliegas proyectos TypeScript usando compilaciones remotas:
-
Detección automática: La plataforma detecta proyectos TypeScript por la presencia de
tsconfig.json. - Compilación: La plataforma compila archivos TypeScript utilizando la configuración TypeScript de tu proyecto.
-
Instalación de dependencias: La plataforma instala tanto
dependenciescomodevDependenciesdesdepackage.json, ya que se necesitan paquetes en tiempo de compilación comotypescriptpara la compilación. - Optimización: La plataforma solo incluye los archivos necesarios en el paquete final de despliegue.
Puedes usar la compilación remota cuando publicas tu aplicación TypeScript usando estas herramientas:
-
Azure Functions Core Tools: el comando
func azure functionapp publishrequiere la opción--build-remote=truepara habilitar la compilación remota para aplicaciones de Node.js. -
AZ CLI:
az functionapp deployment source config-ziprequiere la--build-remote=truebandera para habilitar la compilación remota de Node.js aplicaciones. - Visual Studio Code: el comando Azure Functions: Deploy to Azure... (Implementar en Azure...) siempre usa una compilación remota.
-
Entrega continua mediante Acciones de GitHub: la acción Azure/functions-action@v1 hace uso de la compilación remota cuando el parámetro
remote-buildse establece entruepara el plan de consumo flexible o cuando los parámetrosscm-do-build-during-deploymentyenable-oryx-buildse establecen entruepara planes dedicados.
Para habilitar la compilación remota para otros escenarios, como la entrega continua con Azure Pipelines, consulte Habilitación de la compilación remota.
Dependencias personalizadas
Azure Functions soporta dependencias npm personalizadas y privadas utilizando registros npm personalizados, paquetes privados o paquetes locales.
Construcción remota con registro npm personalizado
Cuando tus paquetes privados estén disponibles en un registro npm personalizado, puedes solicitar una compilación remota tras configurar la ubicación del registro.
Para usar un registro personalizado, crea un .npmrc archivo en la raíz de tu proyecto:
registry=https://your-private-registry.com/
//your-private-registry.com/:_authToken=${NPM_TOKEN}
Paquetes locales y módulos privados
Se soportan paquetes locales y módulos privados al construir aplicaciones TypeScript Azure Function.
Para incluir paquetes locales usando compilación remota, refírelos en tu package.json archivo:
{
"dependencies": {
"@azure/functions": "^4.0.0",
"my-private-package": "file:../my-private-package",
"another-local-package": "file:./packages/local-lib"
}
}
Para incluir dependencias locales usando la compilación local, instala las dependencias localmente y desplázalas con la compilación remota deshabilitada:
# 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
Utiliza paquetes de espacio de trabajo
Para configuraciones de monorepo o npm workspace, consulta los paquetes compartidos usando npm workspaces en tu package.json archivo:
{
"name": "functions-app",
"dependencies": {
"@azure/functions": "^4.0.0",
"@mycompany/shared-lib": "workspace:*"
},
"workspaces": [
"packages/*"
]
}
Empaquetar antes del despliegue
Utiliza herramientas de empaquetado como webpack, esbuild o rollup para crear un único paquete antes del despliegue:
# Bundle your application
npm run bundle
# Deploy the bundled output
func azure functionapp publish <APP_NAME> --no-build