Đối với các nhà phát triển muốn viết các hàm bằng TypeScript, Cloud Functions cung cấp 2 loại hỗ trợ:
- Tạo và định cấu hình các dự án TypeScript để dịch chuyển tự động khi khởi chạy (
firebase init functions
). - Chuyển đổi nguồn TypeScript hiện có thành JavaScript tại thời điểm triển khai thông qua một hook trước khi triển khai.
Khi làm theo các hướng dẫn trong hướng dẫn này, bạn có thể di chuyển một chuyển dự án JavaScript sang TypeScript và tiếp tục triển khai các hàm bằng cách sử dụng pretriển khai hook để chuyển đổi mã nguồn của bạn. TypeScript mang lại nhiều lợi ích so với JavaScript dạng vanilla khi viết hàm:
- TypeScript hỗ trợ các tính năng JavaScript mới nhất như không đồng bộ/chờ, đơn giản hóa việc quản lý lời hứa
- Trình tìm lỗi mã nguồn Cloud Functions làm nổi bật các vấn đề thường gặp trong khi bạn lập trình
- An toàn về kiểu giúp bạn tránh lỗi thời gian chạy trong các hàm được triển khai
Nếu bạn mới sử dụng TypeScript, hãy xem nội dung TypeScript trong 5 phút.
Khởi chạy một dự án Cloud Functions mới bằng TypeScript
Chạy firebase init functions
trong một thư mục mới. Công cụ này cung cấp cho bạn các tuỳ chọn để tạo
dự án có JavaScript hoặc TypeScript. Chọn TypeScript để xuất
cấu trúc dự án sau:
myproject
+- functions/ # Directory containing all your functions code
|
+- package.json # npm package file describing your Cloud Functions code
|
+- tsconfig.json
|
+- .eslintrc.js # Optional file if you enabled ESLint
+- tsconfig.dev.json # Optional file that references .eslintrc.js
|
+- src/ # Directory containing TypeScript source
| |
| +- index.ts # main source file for your Cloud Functions code
|
+- lib/
|
+- index.js # Built/transpiled JavaScript code
|
+- index.js.map # Source map for debugging
Sau khi quá trình khởi chạy hoàn tất, hãy huỷ nhận xét mẫu trong chỉ mục.ts rồi chạy
npm run serve
để thấy lời nhắn "Hello World" ("Xin chào thế giới") hoạt động.
Sử dụng dự án TypeScript hiện có
Nếu đã có một dự án TypeScript, bạn có thể thêm một hook trước khi triển khai vào
đảm bảo dự án của bạn được mã hoá mỗi khi bạn triển khai mã
Cloud Functions for Firebase. Bạn sẽ cần có
tệp tsconfig.json
được định dạng đúng cách và dự án Firebase sẽ cần
để thực hiện các sửa đổi sau đối với cấu hình Firebase của bạn:
Chỉnh sửa
package.json
để thêm tập lệnh bash nhằm xây dựng dự án TypeScript. Ví dụ:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
Chỉnh sửa
firebase.json
để thêm một hook trước khi triển khai để chạy tập lệnh bản dựng. Ví dụ:{ "functions": { "predeploy": "npm --prefix functions run build", } }
Với cấu hình này, lệnh firebase deploy --only functions
tạo mã TypeScript và triển khai mã đó dưới dạng các hàm.
Di chuyển dự án JavaScript hiện có sang TypeScript
Nếu bạn đang có một dự án Cloud Functions mà bạn đã khởi chạy và được phát triển bằng JavaScript, bạn có thể di chuyển mã đó sang TypeScript. Bạn nên tạo điểm kiểm tra git hoặc sao lưu trước khi bắt đầu.
Cách di chuyển dự án JavaScript Cloud Functions hiện có:
- Tạo điểm kiểm tra git và lưu bản sao của các tệp nguồn JavaScript hiện tại của bạn.
- Trong thư mục dự án, hãy chạy
firebase init functions
và chọnTypeScript
khi được nhắc về một ngôn ngữ để viết hàm. - Khi được nhắc xem có ghi đè tệp
package.json
hiện có hay không, hãy chọn Không, trừ phi bạn chắc chắn là không muốn giữ tệp hiện có. - Xoá
index.ts
trong thư mụcfunctions/src
, thay thế bằng mã nguồn hiện có. - Trong tệp
tsconfig.json
được tạo khi khởi chạy, hãy thiết lập các tuỳ chọn trình biên dịch để cho phép JavaScript:"allowJs": true
. - Sao chép tệp
package.json
đã lưu vào thư mụcfunctions
rồi chỉnh sửa tệp này để đặt"main"
thành"lib/index.js"
. Ngoài ra trong
package.json
, hãy thêm một tập lệnh bản dựng cho TypeScript như sau:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
Thêm
"typescript"
dưới dạng phần phụ thuộc dành cho nhà phát triển bằng cách chạynpm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser
.Đối với tất cả phần phụ thuộc, hãy chạy
npm install --save @types/<dependency>
.Viết lại mã nguồn từ .js thành .ts nếu muốn.
Mô phỏng các hàm TypeScript
Để kiểm thử cục bộ các hàm TypeScript, bạn có thể sử dụng các công cụ mô phỏng được mô tả
trong phần Chạy các hàm cục bộ. Bạn cần phải
biên dịch mã trước khi sử dụng các công cụ này, vì vậy, hãy nhớ chạy npm run build
bên trong thư mục hàm của bạn trước khi chạy firebase emulators:start
hoặc
firebase functions:shell
. Hoặc, chạy npm run serve
hoặc
npm run shell
làm lối tắt; các lệnh này vừa chạy bản dựng vừa chạy
phục vụ/bắt đầu shell các hàm.
Nhật ký hàm cho các dự án TypeScript
Trong firebase deploy
, index.ts
của dự án sẽ được chuyển đổi sang index.js
,
nghĩa là nhật ký Cloud Functions sẽ cho ra số dòng từ
index.js
chứ không phải mã bạn đã viết. Để giúp bạn dễ dàng tìm thấy
các đường dẫn và số dòng tương ứng trong index.ts
,
firebase deploy
tạo functions/lib/index.js.map
. Bạn có thể sử dụng nguồn này
ánh xạ trong IDE ưa thích hoặc thông qua mô-đun nút.