'Npm start' ne zaman ve 'ng servis' ne zaman kullanılır?


157

ng serve Geliştirme sunucusu üzerinden Açısal bir projeye hizmet eder

 

npm startpaketin "script" nesnesinin "start" özelliğinde belirtilen rasgele bir komutu çalıştırır. "Scripts" nesnesinde "start" özelliği belirtilmezse, server.js düğümü çalıştırılır.

ng serveGömülü sunucuyu npm startbaşlatırken Düğüm sunucularını başlatır gibi görünüyor .

Birisi ona ışık tutabilir mi?


1
Nesnenizdeki bu startkomutun ne yaptığına baktınız mı ? Sizce neden bir fark var? scriptspackage.json
jonrsharpe

Yanıtlar:


205

npm startdosyanızdaki nesnenin startkomutu için tanımladığınız her şeyi çalıştırır .scriptspackage.json

Yani şuna benziyorsa:

"scripts": {
  "start": "ng serve"
}

Sonra npm startkoşacak ng serve.


Ayrıca, OP'nin zaten sahip olduğu alıntıya göre: "Scripts" nesnesinde "start" özelliği belirtilmezse, çalışır node server.js(bu dosya yoksa başarısız olur).
jonrsharpe

1
Evet, ama açısal-cli başlatma sırasında start komutunu yaratır, bu yüzden eğer değiştirmediyse aynı komut olmalıdır.
Puigcerber

7
Not: Kullanmak npm startdaha iyidir. Amacıyla kullanmak ng serveglobal olarak açısal cli yüklemek veya düğüm modülleri kutusundan başvuru gerekiyor.
Kyle Pfromer

43

CLI kullanan bir proje için genellikle ng sunumu kullanırsınız. Diğer durumlarda npm start kullanmak isteyebilirsiniz. İşte ayrıntılı açıklama:

hizmet

Bir proje hizmet verecek olan özellikle kullanarak 'Eğik CLI farkında' Eğik CLI kullanılarak oluşturuldu, yani bir proje:

ng new app-name

Dolayısıyla, CLI kullanarak bir projeyi yapılandıysanız, büyük olasılıkla hizmet sunmak

npm başlangıç

Bu, Açısal CLI farkında olmayan bir proje söz konusu olduğunda kullanılabilir (veya yalnızca Açısal CLI farkında olan bir proje için 'hizmet sunmak' için kullanılabilir)

Diğer yanıtlar durumu olarak, bu, 'start' tanımlayıcısına sahip package.json öğesinden npm komutlarını çalıştıracak bir npm komutudur ve sadece 'ng serve' komutunu çalıştırmak zorunda değildir. Pakette aşağıdaki gibi bir şey olması mümkündür: json:

   "scripts": {
     "build:watch": "tsc -p src/ -w",
     "serve": "lite-server -c=bs-config.json",
     "start": "concurrently \"npm run build:watch\" \"npm run serve\""
     ...
   },
   "devDependencies": {
     "concurrently": "^3.2.0",
     "lite-server": "^2.2.2",

Bu durumda, 'npm start' aşağıdaki komutların çalıştırılmasına neden olur:

concurrently "npm run build:watch" "npm run serve"

Bu, aynı zamanda TypeScript derleyicisini (kod değişikliklerini izleyerek) çalıştırır ve Düğüm lite sunucusunu (BrowserSync kullanıcılarının) çalıştırır.


1
Sanırım aşağı oy almanızın tek nedeni, işaretli cevapta söylenenleri az çok tekrarlamanız olabilir.
Kostrzak

1
Bana bir ya da diğerini ne zaman kullanacağımı söyleyen ve sonra verdiklerinizi takip eden bir cümle ifadesiyle başlamayı tercih ederim. Ben küçük bir projede, aynı şey olabilir, npm başlangıç ​​sadece hizmet ng çalıştırabilirsiniz. Bir proje büyüdüğünde veya daha fazla adım gerektiğinde, uygulamaları başlatmak / çalıştırmak için npm start npm standarttır. Neredeyse bir cevap verdim ve verdiğiniz şeyi okuduktan sonra gerek olmadığını fark ettim. Cevabınız çok iyiydi.
PatS

13

Belgeden

npm-start :

Bu, paketin "script" nesnesinin "start" özelliğinde belirtilen rasgele bir komutu çalıştırır. "Scripts" nesnesinde "start" özelliği belirtilmezse, server.js düğümü çalıştırılır.

Bu, paketin içindeki başlangıç ​​komut dosyalarını çağıracağı anlamına gelir.

"scripts": {
"start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite --baseDir ./app --port 8001\" ",
"lite": "lite-server",
 ...
}

ng hizmet :

Açısal-cli tarafından oluşturulan açısal2 uygulamaları başlatmak için açısal / açısal-cli tarafından sağlanmıştır. açısal-cli yüklediğinizde, C:\Users\name\AppData\Roaming\npm(pencereler için) altında ng.cmd oluşturur ve"%~dp0\node.exe" "%~dp0\node_modules\angular-cli\bin\ng" %*

Böylece , sadece açısal cli için npm startnerede kendi yürütme yapabilirsinizng serve

Ayrıca Bakınız: Sunumu çalıştırdığınızda ne olur?


Veya verebilirnpm ERR! missing script: start
Leo

1

Bundan daha fazlası var. Yürütülen yürütülebilir dosyalar farklıdır.

npm run start

projelerinizi node_modules / .bin dosyasında bulunan yerel yürütülebilir dosyayı çalıştıracaktır.

ng serve

global olan başka bir yürütülebilir dosya çalıştırır.

Bu, açısal cli sürüm 5 ile oluşturulan bir Açısal projeyi klonlayıp yüklerseniz ve global cli sürümünüz 7 ise, derleme ile ilgili sorunlarınız olabilir.


0

ngKomut olmadan başka bir makineden taşınan açısal uygulamayı çalıştırmak istiyorsanız package.jsonaşağıdaki gibi düzenleyin

"scripts": {
    "ng": "ng",
    "start": "node node_modules/.bin/ng serve",
    "build": "node node_modules/.bin/ng build",
    "test": "node node_modules/.bin/ng test",
    "lint": "node node_modules/.bin/ng lint",
    "e2e": "node node_modules/.bin/ng e2e"
  }

Son olarak npm startderleme sunucusunu başlatmak için olağan komutu çalıştırın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.