ฉันพยายามเรียกใช้เซิร์ฟเวอร์ dev ด้วย TypeScript และแอปพลิเคชัน Angular โดยไม่มีการแปลงไฟล์ ts ทุกครั้ง ฉันพบว่าฉันสามารถทำงานได้ด้วยts-node
แต่ฉันยังต้องการดู.ts
ไฟล์และโหลดแอป / เซิร์ฟเวอร์อีกครั้งเหมือนที่ฉันทำกับสิ่งที่ชอบดูอึก
ฉันพยายามเรียกใช้เซิร์ฟเวอร์ dev ด้วย TypeScript และแอปพลิเคชัน Angular โดยไม่มีการแปลงไฟล์ ts ทุกครั้ง ฉันพบว่าฉันสามารถทำงานได้ด้วยts-node
แต่ฉันยังต้องการดู.ts
ไฟล์และโหลดแอป / เซิร์ฟเวอร์อีกครั้งเหมือนที่ฉันทำกับสิ่งที่ชอบดูอึก
คำตอบ:
ฉันกำลังดิ้นรนกับสิ่งเดียวกันสำหรับสภาพแวดล้อมการพัฒนาของฉันจนกว่าฉันจะสังเกตเห็นว่าnodemon
API ของช่วยให้เราสามารถเปลี่ยนพฤติกรรมเริ่มต้นเพื่อดำเนินการคำสั่งที่กำหนดเอง ตัวอย่างเช่น:
nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts
หรือดียิ่งขึ้น: ปรับการตั้งค่าของ nodemon ให้เป็นnodemon.json
ไฟล์ที่มีเนื้อหาต่อไปนี้จากนั้นเรียกใช้nodemon
ตามคำแนะนำของ Sandokan:
{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./index.ts" }
เมื่อทำเช่นนี้คุณจะสามารถโหลดซ้ำts-node
กระบวนการโดยไม่ต้องกังวลเกี่ยวกับการใช้งานพื้นฐาน
ไชโย!
อัปเดตสำหรับ nodemon เวอร์ชันล่าสุด:
สร้างnodemon.json
ไฟล์ที่มีเนื้อหาดังต่อไปนี้
{
"watch": ["src"],
"ext": "ts",
"ignore": ["src/**/*.spec.ts"],
"exec": "ts-node ./src/index.ts" // or "npx ts-node src/index.ts"
}
{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./app-server.ts" }
และเพียงพิมพ์nodemon
./
ก่อนชื่อโฟลเดอร์และมันยากจน สิ่งนี้ได้ผลกับฉัน: { "verbose": true, "watch": ["server/**/*.ts"], "ext": "ts js json", "ignore": ["server/**/*.spec.ts"], "exec": "ts-node index.ts" }
. และบรรทัดคำสั่ง:nodemon --watch server/**/*.ts --ignore server/**/*.spec.ts --verbose --exec ts-node index.ts
ext
ในไฟล์กำหนดค่าเพื่อหาการเปลี่ยนแปลงที ไฟล์ปรับแต่งของฉันมีลักษณะดังนี้:{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "ext": "ts js json", "_exec": "node dist/startup.js", "exec": "ts-node src/startup.ts" }
ฉันทิ้งnodemon
และts-node
เป็นทางเลือกที่ดีกว่าts-node-dev
https://github.com/whitecolor/ts-node-dev
เพียงแค่วิ่ง ts-node-dev src/index.ts
tsc --watch
กัน
nodemon
ts-node
ขอบคุณ!
"start": "ts-node-dev src"
ดังนั้นผมจึงมีเพียงตัวอักษร ไม่จำเป็นต้องใช้ babel, nodemon, หรือการกำหนดค่าใด ๆ ที่มาพร้อมกับมัน จัดการทุกอย่างให้คุณ
นี่คือทางเลือกของคำตอบของHeberLZ โดยใช้สคริปต์ npm
ของฉันpackage.json
:
"scripts": {
"watch": "nodemon -e ts -w ./src -x npm run watch:serve",
"watch:serve": "ts-node --inspect src/index.ts"
},
-e
flag ตั้งค่าส่วนขยายให้มองหา-w
ตั้งค่าไดเรกทอรีเฝ้าดู-x
รันสคริปต์--inspect
ในwatch:serve
สคริปต์นั้นเป็นแฟล็ก node.js จริงๆมันแค่เปิดใช้งานการดีบักโปรโตคอล
-e ts -w ./src
เคล็ดลับสำหรับฉัน - สิ่งนี้ทำงานได้กับ loopback4 CLI สร้างโปรเจ็กต์
โดยเฉพาะสำหรับปัญหานี้ฉันได้สร้างtsc-watch
ห้องสมุด คุณสามารถค้นหาได้ในเวลา 23.00 น .
กรณีการใช้งานที่ชัดเจนจะเป็น:
tsc-watch server.ts --outDir ./dist --onSuccess "node ./dist/server.js"
"[...] similar to nodemon but for TypeCcript."
:)
สิ่งนี้ใช้ได้กับฉัน:
nodemon src/index.ts
เห็นได้ชัดว่าขอบคุณเนื่องจากคำขอดึงนี้: https://github.com/remy/nodemon/pull/1552
ts-node
ติดตั้ง
node_modules/
? สำหรับฉันมันล้มเหลวถ้าฉันไม่มี
ts-node
ติดตั้ง การรันคำสั่งนี้โดยไม่ts-node
ส่งผลให้เกิดfailed to start process, "ts-node" exec not found
ข้อผิดพลาด node_modules
คุณน่าจะมีสิ่งนี้เป็นสิ่งประดิษฐ์ที่เหลือใน ที่ถูกกล่าวว่าวิธีการแก้ปัญหานี้จะดีกว่ามากเพราะมันไม่จำเป็นต้องมีการกำหนดค่าเพิ่มเติม
เพิ่ม"watch": "nodemon --exec ts-node -- ./src/index.ts"
ไปยังส่วนของคุณscripts
package.json
คุณสามารถใช้ts-node-dev
มันรีสตาร์ทกระบวนการโหนดเป้าหมายเมื่อใด ๆ ของไฟล์ที่ต้องการเปลี่ยนแปลง (เป็นโหนดมาตรฐาน -DV) แต่แบ่งปันกระบวนการรวบรวม typescript ระหว่างการรีสตาร์ท
ติดตั้ง
yarn add ts-node-dev --dev
และ package.json ของคุณอาจเป็นเช่นนี้
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"tsc": "tsc",
"dev": "ts-node-dev --respawn --transpileOnly ./src/index.ts",
"prod": "tsc && node ./build/index.js"
}
ฉันทำกับ
"start": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec ts-node src/index.ts"
และเส้นด้ายเริ่ม .. ts-node ไม่เหมือนกับ 'ts-node'
ฉันต้องการที่จะไม่ใช้ ts-node และเรียกใช้จากโฟลเดอร์ dist เสมอ
ในการทำเช่นนั้นเพียงแค่ติดตั้ง package.json ด้วยการกำหนดค่าเริ่มต้น:
....
"main": "dist/server.js",
"scripts": {
"build": "tsc",
"prestart": "npm run build",
"start": "node .",
"dev": "nodemon"
},
....
จากนั้นเพิ่มไฟล์กำหนดค่า nodemon.json :
{
"watch": ["src"],
"ext": "ts",
"ignore": ["src/**/*.spec.ts"],
"exec": "npm restart"
}
ที่นี่ฉันใช้"exec": "npm restart"
ดังนั้นไฟล์ ts ทั้งหมดจะทำการคอมไพล์ใหม่เป็นไฟล์ js จากนั้นรีสตาร์ทเซิร์ฟเวอร์
หากต้องการทำงานในสภาพแวดล้อม dev
npm run dev
การใช้การตั้งค่านี้ฉันจะเรียกใช้จากไฟล์ที่แจกจ่ายเสมอและไม่จำเป็นต้องใช้โหนดที
เพิ่มลงในไฟล์ package.json ของคุณ
scripts {
"dev": "nodemon --watch '**/*.ts' --exec 'ts-node' index.ts"
}
และเพื่อให้งานนี้คุณต้องติดตั้ง ts-node เป็น dev-dependency
yarn add ts-node -D
รันyarn dev
เพื่อเริ่มเซิร์ฟเวอร์ dev
index.ts
เป็นตัวอย่างด่วนฉันจะฆ่ามันและเริ่มใหม่ได้อย่างไร