Perbedaan antara `npm start` &` node app.js`, saat memulai aplikasi?

188

Saya telah menginstal aplikasi menggunakan perintah express new 'filename'. Saya baru saja belajar bahwa Anda dapat memulai aplikasi menggunakan:

npm start

Sejauh ini saya telah menggunakan:

node app.js

untuk memulai server saya. Adakah yang tahu apa perbedaan keduanya? Terima kasih.

DIPERBAIKI
sumber

Jawaban:

267

Dari halaman manual , mulai npm:

menjalankan skrip "mulai" paket, jika ada. Jika tidak ada versi yang ditentukan, maka ia memulai versi "aktif".

Memang, deskripsi itu sama sekali tidak membantu, dan hanya itu yang tertulis. Setidaknya lebih didokumentasikan daripada socket.io.

Bagaimanapun, yang sebenarnya terjadi adalah npm terlihat di file package.json Anda , dan jika Anda memiliki sesuatu seperti itu

"script": {"start": "coffee server.coffee"}

maka itu akan melakukan itu. Jika npm tidak dapat menemukan skrip awal Anda, defaultnya adalah:

node server.js

 

Yusuf X
sumber
4
Ah saya mengerti. Jadi pada dasarnya hal yang sama kecuali Anda memilih untuk menjalankan lebih banyak skrip pada waktu kompilasi.
DIPERBARUI
1
Jika Anda biasanya mengetik "node server.js", maka ya.
Yusuf X
1
saya membuat satu aplikasi baru, mulai npm tidak berfungsi. untuk aplikasi lama berjalan dengan baik. ada saran?
pelajar
1
Misalnya "node app.js" tidak akan mengambil perubahan router, sementara "npm start" akan, karena mengeksekusi script start package.json (seperti "node ./bin/www")
Igor Vaschuk
1
jika Anda mulai dengan 'npm' itu dapat memulai kembali aplikasi hanya dengan mengetik 'rs' di konsol.
Elf
10

The dokumentasi telah diperbarui . Jawaban saya memiliki perubahan substansial vs jawaban yang diterima: Saya ingin menunjukkan bahwa dokumentasi terbaru, dan jawaban yang diterima memiliki beberapa tautan yang terputus.

Juga, saya tidak mengerti ketika jawaban yang diterima mengatakan "defaultnya adalah node server.js". Saya pikir dokumentasi menjelaskan perilaku default:

npm-start

Mulai paket

Ringkasan

npm start [-- <args>]

Deskripsi

Ini menjalankan perintah sewenang-wenang yang ditentukan dalam startproperti " " paket dari scriptsobjeknya . Jika tidak "start properti yang ditentukan pada objek " scripts", itu akan berjalan node server.js.

Singkatnya, berlari npm startdapat melakukan satu dari dua hal:

  1. npm start {command_name}: Jalankan perintah arbitrer (yaitu jika perintah tersebut ditentukan dalam start properti objek package.json scripts)
  2. npm start: Lain jika tidak startada properti (atau tidak ada command_nameyang dilewatkan): Jalankan node server.js, (yang mungkin tidak sesuai , misalnya OP tidak memilikiserver.js ; OP berjalan nodeapp.js)
  3. Saya katakan saya akan mendaftar hanya 2 item, tetapi ada kemungkinan lain (yaitu kasus kesalahan). Misalnya, jika tidak ada package.jsondalam direktori tempat Anda menjalankan npm start, Anda mungkin melihat kesalahan:npm ERR! enoent ENOENT: no such file or directory, open '.\package.json'
Kacang Merah
sumber