วิธีเรียกใช้สคริปต์เริ่มต้นด้วย Nodemon


92

ฉันจะรันสคริปต์เริ่มต้นจากไฟล์package.jsonด้วย Nodemon ได้อย่างไร


คุณแน่ใจว่าสามารถรันสคริปต์เริ่มต้นจาก package.json? เพราะจากสิ่งที่ฉันรู้ package.json คือการแสดงรายการการอ้างอิงทั้งหมดของคุณและ nodemon คือการทำให้กระบวนการของคุณทำงานต่อไป ฉันไม่ค่อยแน่ใจว่าคุณกำลังบอกใบ้อะไรที่นี่?
Saras Arya

คำตอบ:


142

นี่จะเป็นคำสั่งง่ายๆสำหรับสิ่งนี้

nodemon --exec npm start

จะเกิดอะไรขึ้นหากฉันต้องการเรียกใช้การทดสอบโดยไม่เรียกใช้แอป โซลูชันของคุณทำงานทั้งสองอย่าง
Sergey

1
สิ่งนี้ทำงานnpm startแต่ไม่เริ่มต้นเซิร์ฟเวอร์โหนดสำหรับฉัน .. มันจะรู้ได้อย่างไรว่า server.js อยู่ที่ไหน?
Sonic Soul

41

ในแพ็คเกจ json:

{
  "name": "abc",
  "version": "0.0.1",
  "description": "my server",
  "scripts": {
    "start": "nodemon my_file.js"
  },
  "devDependencies": {
    "nodemon": "~1.3.8",
  },
  "dependencies": {

  }
}

จากนั้นคุณสามารถใช้เครื่องปลายทางได้ npm start

การติดตั้ง Nodemon: https://www.npmjs.com/package/nodemon


1
ขออภัยกำลังมองหาวิธีเรียกใช้สคริปต์เริ่มต้นด้วย nodemon ไม่ดำเนินการ nodemon ในสคริปต์เริ่มต้น ขออภัยหากไม่ชัดเจน
Citronen

6
จะไม่npm startล้มเหลวในการผลิตเพราะขาด nodemon?
ripper234

2
npm run startnotnpm start
M. Dhaouadi

1
ฉันเป็นมือใหม่กับ npm ฉันไม่เข้าใจว่าทำไมเราต้องระบุสคริปต์เริ่มต้นในขณะที่เราสามารถใช้ nodemon นอกกรอบได้ ฉันเพิ่งติดตั้ง nodemon ด้วย npm และใช้งานได้โดยตรงโดยไม่ต้องระบุสคริปต์ใด ๆ และทำงานได้อย่างสมบูรณ์
Hokhy Tann

@ M.Dhaouadi npm startเป็นนามแฝงของnpm run start
George

18

ฉันมีไฟล์ TypeScript ชื่อ "server.ts" สคริปต์ npm ต่อไปนี้กำหนดค่า Nodemon และ npm เพื่อเริ่มต้นแอปของฉันและตรวจสอบการเปลี่ยนแปลงใด ๆ ในไฟล์ TypeScript:

"start": "nodemon -e ts  --exec \"npm run myapp\"",
"myapp": "tsc -p . && node server.js",

ฉันมี Nodemon อยู่แล้วในการอ้างอิง เมื่อฉันเรียกใช้npm startมันจะขอให้ Nodemon มอนิเตอร์ไฟล์โดยใช้-eสวิตช์จากนั้นมันจะเรียกmyappสคริปต์ npm ซึ่งเป็นการรวมกันอย่างง่าย ๆ ของการแยกไฟล์ typescript จากนั้นเริ่มต้นเซิร์ฟเวอร์ผลลัพธ์ เมื่อฉันเปลี่ยนไฟล์ TypeScript เนื่องจากการ-eสลับวงจรเดียวกันเกิดขึ้นและไฟล์. js ใหม่จะถูกสร้างและดำเนินการ


15

ฉันใช้ Nodemon เวอร์ชัน 1.88.3 ในโปรเจ็กต์ Node.js ของฉัน การติดตั้ง Nodemon ดูในhttps://www.npmjs.com/package/nodemon

ตรวจสอบ package.json ของคุณดูว่า "scripts" มีการเปลี่ยนแปลงดังนี้:

  "scripts": {
    "dev": "nodemon server.js"
  },

server.jsคือชื่อไฟล์ของฉันคุณสามารถใช้ชื่ออื่นสำหรับไฟล์นี้เช่นapp.js.

หลังจากนั้นให้เรียกใช้สิ่งนี้บนเทอร์มินัลของคุณ: npm run dev


8

ใช้-exec:

"your-script-name": "nodemon [options] --exec 'npm start -s'"

มีวิธีอื่นนอกเหนือจาก exec ในการทำเช่นนี้หรือไม่?
Citronen

เพียงแค่nodemon [options] --exec 'npm start -s'หากคุณต้องการทำจากบรรทัดคำสั่ง
nathanhleung

@ArnoldRoa ติดตั้ง
КонстантинВан

5

ก่อนอื่นให้เปลี่ยนไฟล์package.jsonของคุณ

"scripts":
    { 
        "start": "node ./bin/www",
        "start-dev": "nodemon ./app.js"
    },

หลังจากนั้นรันคำสั่ง

npm run start-dev

1
แต่เมื่อคุณหนีapp.jsคุณกำลังข้ามทุกสิ่งที่./bin/wwwทำ ...
Jake Wilson

1
แท็บใหม่ที่เปิดใหม่ทุกครั้ง
Qui-Gon Jinn

5

ในไฟล์ package.json เปลี่ยนไฟล์เป็นแบบนี้

"scripts":{ 
   "start": "node ./bin/www", 
   "start-dev": "nodemon ./app.js"
 },

จากนั้นรันnpm รัน start-dev


2

Nodemon ปล่อยเหตุการณ์ทุกครั้งที่มีการเปลี่ยนแปลงสถานะ เริ่ม, รีสตาร์ทข้อขัดข้อง ฯลฯ คุณสามารถเพิ่มไฟล์คอนฟิกูเรชัน Nodemon (nodemon.json) ดังนี้:

{
   "events": {
       "start": "npm run *your_file*"
   }
}

อ่านเพิ่มเติมในเหตุการณ์ Nodemon - งานทำงานในช่วงเริ่มต้นเซิร์ฟเวอร์เริ่มต้นผิดพลาดออก


2

หากติดตั้งทั่วโลกแล้ว

"scripts": {
    "start": "nodemon FileName.js(server.js)",
},

ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งnodemonทั่วโลก:

npm install -g nodemon

สุดท้ายหากคุณเป็นผู้ใช้ Windows ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานข้อ จำกัด ด้านความปลอดภัยของ Windows PowerShellแล้ว


2

ในแพ็คเกจjson:

"scripts": {
  "start": "node index",
  "dev": "nodemon index"
},

"devDependencies": {
  "nodemon": "^2.0.2"
}

และในเทอร์มินัลสำหรับการพัฒนา:

npm run dev

และสำหรับการเริ่มต้นเซิร์ฟเวอร์ปกติ:

npm start

คืออะไร"regiuler" ? คุณหมายถึง"ปกติ"หรือเปล่า?
Peter Mortensen

1

คุณยังสามารถติดตั้ง nodemon ได้ทั่วโลกเพื่อการใช้งานบ่อย:

npm i nodemon -g หรือ sudo npm i nodemon -g

จากนั้นแก้ไข package.json ของคุณ:

  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js"
  },

โดยทั่วไป 'dev' จะระบุการใช้งานเพื่อการพัฒนา ( npm run dev )


1

จะขึ้นอยู่กับประเภทของการติดตั้ง Nodemon ของคุณ หากคุณติดตั้ง Nodemon ทั่วโลกโดยใช้คำสั่ง ( npm install nodemon --globalหรือnpm install nodemon -g) คุณไม่จำเป็นต้องระบุสคริปต์ใด ๆ สำหรับ Nodemon ในไฟล์package.jsonของคุณ เพียงดำเนินการคำสั่งnodemon index.jsจะเรียกใช้โครงการของคุณ

แต่ถ้าคุณติดตั้ง Nodemon แบบโลคัลโดยใช้คำสั่งnpm install nodemonคุณต้องระบุสคริปต์ หากคุณมันเป็นชื่อที่เริ่มต้นแล้วnpm run startหรือnpm startจะเรียกเซิร์ฟเวอร์เพื่อการทำงาน

// Absolutely no need for global installation
 "scripts": {
    "start": "nodemon index.js"
  }

1

หากคุณnodemonติดตั้งทั่วโลกเพียงแค่เรียกใช้nodemonในโปรเจ็กต์ของคุณก็จะเรียกใช้startสคริปต์โดยอัตโนมัติจากpackage.jsonสคริปต์จาก

ตัวอย่างเช่น:

"scripts": {
  "start": "node src/server.js"
},

จากเอกสาร nodemon :

nodemon จะค้นหาคุณสมบัติ scripts.start ใน package.json ด้วย (ณ nodemon 1.1.x)


-1

เพื่อหลีกเลี่ยงการติดตั้งแบบโกลบอลให้เพิ่ม Nodemon เป็นการอ้างอิงจากนั้น ...

package.json

"scripts": {
    "start": "node ./bin/www",
    "start-dev": "./node_modules/nodemon/bin/nodemon.js ./bin/www"
  },

คุณยังสามารถตั้งเป็น "start-dev": "nodemon ./bin/www" ได้หากคุณติดตั้งภายใต้ devDependencies
WoLfPwNeR
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.