Giới thiệu
Trong Node.js, bạn cần khởi động lại quá trình để các thay đổi có hiệu lực. Điều này thêm một bước bổ sung vào quy trình làm việc của bạn. Bạn có thể loại bỏ bước bổ sung này bằng cách sử dụng nodemon
để khởi động lại quá trình tự động.
nodemon
là một tiện ích giao diện dòng lệnh (CLI) được phát triển bởi @rem bao bọc ứng dụng Node của bạn, xem hệ thống tệp và tự động khởi động lại quá trình.
Trong bài viết này, bạn sẽ tìm hiểu về cài đặt, thiết lập và cấu hình nodemon
.
Điều kiện tiên quyết
Nếu bạn muốn theo dõi bài viết này, bạn sẽ cần:
Hướng dẫn này đã được xác minh với Node.js v17.1.0, npm v8.1.2, nodemon
v2.0.15 và express
v4.17.1.
Bước 1 – Cài đặt nodemon
Trước tiên, bạn sẽ cần cài đặt nodemon
trên máy của bạn. Cài đặt tiện ích trên toàn cầu hoặc cục bộ trên dự án của bạn bằng cách sử dụng npm
hoặc yarn
:
Cài đặt toàn cầu
Bạn có thể cài đặt nodemon
toàn cầu với npm
:
- npm install nodemon –global
Hoặc với yarn
:
Local Installation
You can also install nodemon
tại địa phương. Khi thực hiện cài đặt cục bộ, bạn có thể cài đặt nodemon
như một sự phụ thuộc của nhà phát triển với --save-dev
(hoặc --dev
).
Cài đặt nodemon
địa phương với npm
:
- npm install nodemon –save-dev
Hoặc với yarn
:
One thing to be aware of with a local install is that you will not be able to use the nodemon
ra lệnh trực tiếp:
Output
- command not found: nodemon
Bạn có thể thực thi gói được cài đặt cục bộ:
- ./node_modules/nodemon/bin/nodemon.js [your node app]
Bạn cũng có thể sử dụng nó trong các tập lệnh npm hoặc với npx.
Điều này kết luận nodemon
quá trình cài đặt.
Bước 2 – Thiết lập một Dự án Express Ví dụ với nodemon
Bạn có thể dùng nodemon
để bắt đầu một tập lệnh Node. Ví dụ: nếu bạn có thiết lập máy chủ Express trong server.js
tập tin, bạn có thể bắt đầu nodemon
và để ý những thay đổi như thế này:
You can pass in arguments the same way as if you were running the script with Node:
Every time you make a change to a file with one of the default watched extensions (.js
, .mjs
, .json
, .coffee
, hoặc .litcoffee
) trong thư mục hiện tại hoặc một thư mục con, quá trình sẽ khởi động lại.
Hãy viết một ví dụ server.js
tệp xuất ra thông báo: Dolphin app listening on port ${port}!
.
server.js
const express = require('express')
const app = express()
const port = 3000
app.listen(port, ()=> console.log(`Dolphin app listening on port ${port}!`))
Chạy ví dụ với nodemon
:
The terminal output will display:
Output
[nodemon] 2.0.15 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node server.js` Dolphin app listening on port 3000!
Trong khi nodemon
vẫn đang chạy, hãy thực hiện thay đổi đối với server.js
tập tin. Thay đổi đầu ra một thông báo khác: Shark app listening on port ${port}!
.
Kết quả đầu cuối sẽ hiển thị:
Output
[nodemon] restarting due to changes… [nodemon] starting `node server.js` Shark app listening on port 3000!
Đầu ra đầu cuối từ ứng dụng Node.js đang hiển thị các thay đổi mới.
Bạn có thể khởi động lại quy trình bất kỳ lúc nào bằng cách nhập rs
và đánh ENTER
.
Ngoài ra, nodemon
cũng sẽ tìm kiếm một main
tệp được chỉ định trong dự án của bạn package.json
tập tin:
package.json
{
// ...
"main": "server.js",
// ...
}
Nếu một main
tệp không được chỉ định, nodemon
sẽ tìm kiếm một start
kịch bản:
package.json
{
// ...
"scripts": {
"start": "node server.js"
},
// ...
}
Sau khi bạn thực hiện các thay đổi đối với package.json
, sau đó bạn có thể gọi nodemon
để khởi động ứng dụng mẫu ở chế độ xem mà không cần phải chuyển server.js
.
Bước 3 – Sử dụng các tùy chọn
Bạn có thể sửa đổi cài đặt cấu hình có sẵn để nodemon
.
Hãy xem qua một số tùy chọn chính:
--exec
: Sử dụng--exec
chuyển sang chỉ định một tệp nhị phân để thực thi tệp. Ví dụ, khi kết hợp vớits-node
nhị phân,--exec
có thể trở nên hữu ích để theo dõi các thay đổi và chạy các tệp TypeScript.--ext
: Chỉ định các phần mở rộng tệp khác nhau để xem. Đối với công tắc này, hãy cung cấp danh sách các phần mở rộng tệp được phân tách bằng dấu phẩy (ví dụ:--ext js,ts
).--delay
: Theo mặc định,nodemon
đợi một giây để khởi động lại quá trình khi tệp thay đổi, nhưng với--delay
chuyển đổi, bạn có thể chỉ định một độ trễ khác. Ví dụ,nodemon --delay 3.2
trong thời gian trễ 3,2 giây.--watch
: Sử dụng--watch
chuyển sang chỉ định nhiều thư mục hoặc tệp để xem. Cộng một--watch
chuyển đổi cho từng thư mục bạn muốn xem. Theo mặc định, thư mục hiện tại và các thư mục con của nó được theo dõi, vì vậy với--watch
bạn có thể thu hẹp điều đó thành chỉ các thư mục con hoặc tệp cụ thể.--ignore
: Sử dụng--ignore
chuyển sang bỏ qua các tệp, mẫu tệp hoặc thư mục nhất định.--verbose
: Một đầu ra dài dòng hơn với thông tin về (các) tệp đã thay đổi để kích hoạt khởi động lại.
Bạn có thể xem tất cả các tùy chọn có sẵn bằng lệnh sau:
Using these options, let's create the command to satisfy the following scenario:
- watching the
server
danh mục - chỉ định các tệp với một
.ts
gia hạn - bỏ qua các tệp có
.test.ts
hậu tố - thực thi tệp (
server/server.ts
) vớits-node
- đợi ba giây để khởi động lại sau khi tệp thay đổi
- nodemon –watch server –ext ts –exec ts-node –ignore ‘*.test.ts' –delay 3 server/server.ts
Kết quả đầu cuối sẽ hiển thị:
Output
[nodemon] 2.0.15 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): server [nodemon] watching extensions: ts [nodemon] starting `ts-node server/server.ts`
Lệnh này kết hợp --watch
, --ext
, --exec
, --ignore
, và --delay
các tùy chọn để thỏa mãn các điều kiện cho kịch bản của chúng tôi.
Bước 4 – Sử dụng cấu hình
Trong ví dụ trước, thêm công tắc cấu hình khi chạy nodemon
có thể trở nên tẻ nhạt. Một giải pháp tốt hơn cho các dự án yêu cầu cấu hình phức tạp là xác định các tùy chọn này trong nodemon.json
tập tin.
Ví dụ: đây là các cấu hình giống như ví dụ dòng lệnh trước đó, nhưng được đặt trong nodemon.json
tập tin:
gật gù.json
{
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
}
Lưu ý việc sử dụng execMap
thay cho --exec
chuyển. execMap
cho phép bạn chỉ định mã nhị phân cho các phần mở rộng tệp nhất định.
Ngoài ra, nếu bạn không muốn thêm một nodemon.json
tệp cấu hình cho dự án của bạn, bạn có thể thêm các cấu hình này vào package.json
tập tin dưới một nodemonConfig
Chìa khóa:
package.json
{
"name": "nodemon-example",
"version": "1.0.0",
"description": "",
"nodemonConfig": {
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
},
// ...
Sau khi bạn thực hiện các thay đổi đối với nodemon.json
hoặc package.json
, sau đó bạn có thể bắt đầu nodemon
với tập lệnh mong muốn:
nodemon
sẽ chọn các cấu hình và sử dụng chúng. Bằng cách này, các cấu hình của bạn có thể được lưu, chia sẻ và lặp lại để tránh lỗi sao chép và dán hoặc nhập trong dòng lệnh.
Phần kết luận
Trong bài viết này, bạn đã khám phá cách sử dụng nodemon
với các ứng dụng Node.js của bạn. Công cụ này giúp tự động hóa quá trình dừng và khởi động máy chủ Node để xem các thay đổi.
Để biết thêm thông tin về các tính năng có sẵn và khắc phục lỗi, hãy tham khảo tài liệu chính thức.
Nếu bạn muốn tìm hiểu thêm về Node.js, hãy xem trang chủ đề Node.js của chúng tôi để biết các bài tập và dự án lập trình.
.