TypeScript Azure İşlevleri uygulamaları oluşturun ve dağıtın

Azure İşlevleri, TypeScript uygulamalarınızı Azure'a yayımlamak için birden fazla derleme seçeneğini destekler. Yerel ortamınıza, uygulama bağımlılıklarınıza, TypeScript derleme gereksinimlerine ve çalışma zamanı ihtiyaçlarınıza göre oluşturma yönteminizi seçin.

Bir yapı yöntemi seçmek

Faktör Yerel yapım (önerilir) Uzaktan kurulum
En iyi kullanım alanları Karmaşık yapılar, monorepolar, özel araçlar Basit projeler, hızlı dağıtımlar
Paket boyutu Daha büyük (içerir node_modules) Daha küçük (bağımlılıklar Azure'da yüklenir)
TypeScript derlemesi Yerel olarak derlersiniz Azure otomatik derliyor
Yerel ikili uyumluluk Hedef mimariyi eşleştirmeniz gerekir Otomatik olarak yönetilir (Linux x64)
Build zaman aşımı riski Yok (bilgisayarınızda çalışır) Büyük bağımlılık kümeleri için mümkün
Control Tam (herhangi bir derleme aracı, paketleyici, iyileştirici) Platform varsayılanlarıyla sınırlı

Özel npm paketleri veya özel kayıtlar için bkz. Özel bağımlılıklar.

Uygulamanızı dağıtım için paketleyin

TypeScript fonksiyon uygulamanızı Azure'a dağıtırken, dağıtım paketiniz şu gereksinimleri karşılamalıdır:

  • JavaScript çıktısı gerekli: Azure İşlevleri JavaScript çalıştırır, bu yüzden TypeScript dağıtımdan önce veya dağıtım sırasında derlenmiş olmalıdır.

  • Kök düzeyi host.json: Bir host.json dosyanın dağıtım paketinin kökünde ve bir alt klasörde iç içe olmadığından emin olun.

  • package.json main alan: Functions çalışma zamanı, bu alanı başlatıldığında okur ve fonksiyonlarınızı tespit eder. Derlenmiş JavaScript giriş noktanıza işaret etmeli (örneğin, dist/src/index.js).

  • Geliştirme dosyalarını dışla: Gereksiz dosyaları dağıtımdan dışlamak için bir .funcignore dosya kullanın, bu örnekte olduğu gibi:

    .git/
    .vscode/
    local.settings.json
    test/
    .env
    tsconfig.json
    src/
    node_modules/
    

Ayrıca konuşlandırmanızı planlarken şu takasları da aklınızda bulundurun:

  • Yapı ortamı, üretimle uyumlu olmalıdır: Linux x64 mimarisi için yerel ikili bağımlılıklar oluşturulmalıdır. Uzaktan derleme bunu otomatik olarak çözer; yerel derleme için Docker veya konteynerli bir yapım ortamı kullanmayı düşünün.
  • Dağıtım paketi boyutu soğuk başlatmayı etkiler: Büyük bağımlılık kümeleri soğuk başlatma gecikmesini artırır çünkü çalışma zamanı her dosyayı ayrı ayrı yüklemek zorundadır. Uygulamanızı esbuild veya webpack gibi araçlarla daha az dosyaya paketlemek, başlangıç süresini önemli ölçüde azaltabilir.
  • Uzaktan derlemenin zaman aşımına bağlı sınırları vardır: Bağımlılık kurulumu veya TypeScript derlemesi platform sınırlarını aşarsa, derleme başarısız olur. Büyük projeler için önceden oluşturulmuş bağımlılıklara sahip yerel bir yapı kullanın.
  • Modül başlatmanın zaman sınırları vardır: Node.js modül yüklemesi ve başlatma sırasında fonksiyon indeksleme zamana bağlıdır. Mümkün olduğunda üst düzey ithalatları azaltın veya dinamik ithalatlar kullanın.

Yerel derleme

Eğer açıkça uzaktan derleme talep etmezseniz, makineniz bağımlılıkları yükler ve TypeScript'i derler. Sonra tüm derlenmiş proje ve bağımlılıkları yerel olarak fonksiyon uygulamanıza paketleyip dağıtırsınız.

Yerel derleme, daha büyük bir paket yüklemesi sağlar ancak size derleme süreci üzerinde tam kontrol sağlar ve geliştirme ortamınızla uyumluluğu sağlar.

Yerel derleme kullanan TypeScript projeleri için:

  1. Ön Derleme TypeScript: Dağıtımdan önce TypeScript kodunuzu yerel derleyin.
  2. Bağımlılıkları kur: Bağımlılıkları yerel olarak çalıştırın npm install veya yarn install kurun.
  3. Yapı doğrulama: Yapı çıktılarınızın yerel ortamınızda doğru çalıştığından emin olun.
  4. Derlenmiş çıktıyı dağıt: Derlenmiş JavaScript'i bağımlılıklarla birlikte dağıtın.

Yerel derleme için örnek komutlar:

# 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

Aşağıdaki araçları yerel derleme kullanacak şekilde yapılandırabilirsiniz:

Uzaktan derleme

Uzaktan derleme kullandığınızda, Functions platformu paket kurulumunu, TypeScript derlemesini yönetir ve uzak çalışma zamanı ortamıyla uyumluluğu sağlar.

Remote build kullanarak, JavaScript dosyalarını eklemenize node_modules veya derlemenize gerek olmadığı için daha küçük bir dağıtım paketi elde edersiniz.

TypeScript projelerini uzaktan derleme kullanarak dağıttığınızda:

  1. Otomatik algılama: Platform, TypeScript projelerini varlığına tsconfig.jsongöre tespit eder.
  2. Derleme: Platform, projenizin TypeScript yapılandırmasını kullanarak TypeScript dosyalarını derler.
  3. Bağımlılık kurulumu: Platform, derleme için dependencies gibi derleme zamanı paketleri gerektiğinden, devDependencies içinden hem package.json hem de typescript kurar.
  4. Optimizasyon: Platform, nihai dağıtım paketinde yalnızca gerekli dosyaları içerir.

TypeScript uygulamanızı yayınlarken şu araçları kullanarak uzaktan derleme kullanabilirsiniz:

Azure Pipelines ile sürekli teslim gibi diğer senaryolarda uzaktan derlemeyi etkinleştirmek için bkz. Uzaktan Derlemeyi Etkinleştirme.

Özel bağımlılıklar

Azure İşlevleri, özel npm kayıtları, özel paketler veya yerel paketler kullanarak özel ve özel npm bağımlılıklarını destekler.

Özel npm kayıt defteriyle uzaktan yapım

Özel paketleriniz özel bir npm kayıt defterinde bulunduğunda, kayıt defterini yapılandırdıktan sonra uzaktan derleme talep edebilirsiniz.

Özel bir kayıt defteri kullanmak için, proje kökünüzde bir .npmrc dosya oluşturun:

registry=https://your-private-registry.com/
//your-private-registry.com/:_authToken=${NPM_TOKEN}

Yerel paketler ve özel modüller

TypeScript Azure Function uygulamaları oluşturulurken yerel paketler ve özel modüller desteklenir.

Uzaktan derleme kullanarak yerel paketleri eklemek için dosyanızda referans package.json verin:

{
  "dependencies": {
    "@azure/functions": "^4.0.0",
    "my-private-package": "file:../my-private-package",
    "another-local-package": "file:./packages/local-lib"
  }
}

Yerel derleme kullanılarak yerel bağımlılıkları dahil etmek için, bağımlılıkları yerel olarak kurun ve uzaktan derleme devre dışı bırakın:

# 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

Çalışma alanı paketlerini kullanın

Monorepo veya npm çalışma alanı kurulumları için, dosyanızdaki package.json npm çalışma alanlarını kullanarak paylaşılan paketlere referans verin:

{
  "name": "functions-app",
  "dependencies": {
    "@azure/functions": "^4.0.0",
    "@mycompany/shared-lib": "workspace:*"
  },
  "workspaces": [
    "packages/*"
  ]
}

Dağıtımdan önce paketle

Dağıtımdan önce tek bir paket oluşturmak için webpack, esbuild veya rollup gibi paketleme araçlarını kullanın:

# Bundle your application
npm run bundle

# Deploy the bundled output
func azure functionapp publish <APP_NAME> --no-build