2016-06-22 23 views
38

Tôi đang cố gắng chạy một máy chủ dev có kiểu chữ và ứng dụng angular2 mà không cần phải chuyển đổi tệp ts mỗi lần, tôi thấy rằng tôi có thể chạy với nút ts nhưng tôi muốn cũng để xem các tập tin .ts và tải lại ứng dụng/máy chủ như tôi sẽ làm với một cái gì đó như đồng hồ gulp.Cách xem và tải lại ts-node khi thay đổi tệp bản ghi

Trả lời

76

Tôi đã vật lộn với điều tương tự cho môi trường phát triển của mình cho đến khi tôi nhận thấy rằng api của nodemon cho phép chúng ta thay đổi hành vi mặc định của nó để thực thi lệnh tùy chỉnh. Một ví dụ về điều này sẽ là như sau:

nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts 

Hoặc thậm chí tốt hơn và ra bên ngoài cấu hình nodemon như Sandokan sugested vào một tập tin nodemon.json với các nội dung sau đây, và sau đó chỉ cần chạy nodemon:

{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./index.ts" } 

Nhờ làm điều này bạn sẽ có thể tải lại trực tiếp một tiến trình ts-node mà không phải lo lắng về việc triển khai bên dưới.

Chúc mừng!

Cập nhật cho hầu hết các phiên bản gần đây của nodemon:

{ 
    "watch": ["src"], 
    "ext": "ts", 
    "ignore": ["src/**/*.spec.ts"], 
    "exec": "ts-node ./src/index.ts" 
} 
+0

nếu 'index.ts' là một thể hiện rõ ràng, làm thế nào tôi có thể giết nó và khởi động lại – elaijuh

+0

@elaijuh trong lý thuyết cùng một lệnh này nên thực hiện thủ thuật, khi nodemon được cấu hình để thực hiện lệnh tùy chỉnh (trong trường hợp này là nút-ts) thay vì lệnh nút mặc định, nó sẽ tắt quá trình và bắt đầu một quy trình mới mỗi lần tìm thấy thay đổi trên biểu thức đồng hồ trừ biểu thức bỏ qua :) – HeberLZ

+11

bạn cũng có thể tạo tệp nodemon.json với tất cả các tùy chọn được đề cập trong đó như sau: '{ " đồng hồ ": [" src/**/*. ts "], " bỏ qua ": [" src/**/*. spec.ts "], " exec ": "ts-node ./app-server.ts" } 'và chỉ cần gõ 'nodemon' –

4

Cụ thể cho vấn đề này tôi đã tạo ra thư viện tsc-watch. bạn có thể tìm thấy nó trên npm.

trường hợp sử dụng hiển nhiên sẽ là:

tsc-watch server.ts --outDir ./dist --onSuccess "node ./dist/server.ts"

19

Dưới đây là một thay thế cho của HeberLZ answer, sử dụng các kịch bản NPM.

My package.json:

"scripts": { 
    "watch": "nodemon -e ts -w ./src -x npm run watch:serve", 
    "watch:serve": "ts-node --inspect src/index.ts" 
    }, 
  • -e cờ đặt extenstions để tìm kiếm,
  • -w đặt thư mục theo dõi,
  • -x thực thi kịch bản.

--inspect trong tập lệnh watch:serve thực sự là cờ node.js, nó chỉ cho phép giao thức gỡ lỗi.

+1

Ngoài ra, hãy chắc chắn rằng bạn đã cài đặt bản mẫu cục bộ cho dự án. Nếu không, lỗi bạn có thể nhận được không rõ ràng. – Aranir

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