firebase / firebase/firebase-admin-node

[FR] Bundle size

Đang mở
#1,426 14 bình luận 7 reaction 0 người được giao Xem trên GitHub
needs-triage type: feature request
Ngôn ngữ chính
TypeScript
Star
1.7k
Fork
419
Merge trung bình
3 ngày 10 giờ
Pull request đã merge (30 ngày)
16

Mô tả

**Is your feature request related to a problem? Please describe.**
When using `firebase-admin` on AWS lambda it adds a big blog to the bundle size. We are using `esbuild` to bundle our sources written in TS, and bundling the admin sdk adds an extra of 5.7MB, minified 2.8MB. This is far from optimal, because the bundle should be as small as possible for better cold-start performance. The code looks like this:

```js
import * as admin from "firebase-admin";

const app = admin.initializeApp();
console.log("app :>> ", app);

const firestore = app.firestore();
console.log("firestore :>> ", firestore);
```

**Describe the solution you'd like**
Make it possible to load or install only the parts of the SDK that are really needed (like the new version of the js client sdk => https://github.com/firebase/firebase-js-sdk)

**Describe alternatives you've considered**
I tried to add only parts of SDK we need, e.g.

```js
import { initializeApp } from "firebase-admin/lib/firebase-namespace";

const app = initializeApp();
console.log("app :>> ", app);

const firestore = app.firestore();
console.log("firestore :>> ", firestore);
```

but this gives the same bundle size and it does not work, even when compiling with `tsc`: When running via `node main.js` it gives this:

```bash
/some/path/main.js:6
var app = (0, firebase_namespace_1.initializeApp)();
^

TypeError: (0 , firebase_namespace_1.initializeApp) is not a function
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với ví dụ TypeScript import firebase-admin và entry point thay thế firebase-admin/lib/firebase-namespace, sau đó tái hiện bundle được báo cáo bằng esbuild và kiểm tra main.js được tạo ra. Hoàn thành khi SDK chỉ có thể tải các phần cần thiết và bundle kết quả nhỏ hơn đáng kể mà không làm hỏng quá trình khởi tạo hoặc việc sử dụng Firestore.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
aws, nodejs, typescript
Lĩnh vực
build-system, cloud, performance
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.