2016-02-04 25 views
6

Thực tiễn tốt nhất khi triển khai máy chủ NodeJS được viết bằng TypeScript để sản xuất là gì?Triển khai Máy chủ NodeJS Loại Bản ghi

Tôi muốn tránh có 3 tệp (ts, js, map) cho mọi tập lệnh trong kho lưu trữ git của tôi.

Tôi có thể sử dụng grunt/gulp để tạo thư mục "dist" và sao chép tất cả các tệp được biên dịch ở đó, nhưng sau đó tôi sẽ có chúng trong repo của tôi. Tôi có thể tạo ra repo riêng biệt chỉ cho mã biên dịch, nhưng đó không phải là lý tưởng cũng như tôi nghĩ.

Ngoài ra, khi tôi chạy node app.ts mà không có js hoặc bản đồ hiện tại, nó thực sự khởi động mọi thứ tốt đẹp. Vậy các tệp được biên dịch có cần thiết cho máy chủ nút không?

Lưu ý: Tôi không có bất kỳ kịch bản/tác vụ biên dịch nào tại chỗ, IDE của tôi tự động biên dịch các tệp ts cho tôi.

Trả lời

6

Bạn có thể sử dụng typescript để làm tất cả những điều này cho bạn

tsconfig.json

{ 
    ... 
    "outDir": "dist", 
    "sourceMap": false, 
    "declaration": false 
} 
  • outDir sẽ biên dịch các tập tin vào một thư mục, TP
  • sourceMap sẽ quyết định liệu có nên đầu ra .map tệp
  • declaration sẽ quyết định xem có nên đầu ra .d.ts file

Các tuỳ chọn khác có thể được tìm thấy here và thông tin về cách sử dụng một tập tin tsconfig.json thể được tìm thấy here

+0

nhưng điều này vẫn sẽ đòi hỏi bước thủ công wouldnt nó? Những gì tôi đang tìm là để đẩy * .ts để repo và sau đó tự động kéo nó trên máy chủ mà không cần tôi phải đăng nhập và thậm chí tốt hơn mà không cần dựa vào quá trình biên dịch trên máy chủ. Nếu điều đó sẽ thất bại thì đó sẽ là rắc rối – Tom

+0

Việc biên dịch là cần thiết tại một số điểm. Sử dụng một CI để biên dịch và sau đó triển khai các tập tin đã biên dịch đến một máy chủ thành công là phổ biến. Cách tiếp cận khác là sử dụng một cái gì đó như 'npm' để chỉ xuất bản các tệp được biên dịch và sau đó kích hoạt triển khai trên máy chủ kéo từ kho lưu trữ' npm'. Không có cách kỳ diệu để làm những gì bạn đang yêu cầu, bạn sẽ cần phải thiết lập một đường dẫn cơ sở hạ tầng sẽ xử lý điều này cho bạn. Có rất nhiều hướng dẫn và hướng dẫn về điều này mà bạn có thể tìm thấy trực tuyến, và không phải là TypeScript cụ thể kể từ khi bạn biên dịch, tất cả chỉ là JavaScript afterall – SnareChops

+0

Phải, do đó, câu trả lời là biên dịch trước mã trên máy dev và đẩy nó để cùng một repo hoặc repo riêng biệt chỉ cho mã biên dịch. Bây giờ làm thế nào đến mà app.ts nút đang chạy tốt mà không cần các tập tin js generadet? – Tom

Các vấn đề liên quan