Npm installve
npm run build` arasındaki fark nedir?
Projemde bazen npm install
yapıldığında npm'in başarısız olmaya başladığını fark ettim, ancak npm run build
çalıştırıldığında sorunsuz çalışıyor.
Bu iki hedefin, yani install
ve run build
hedeflerinin iç işleyişi nasıl farklılık gösterir?
npm install, üzerinde çalıştığınız node projesi için bağımlılıkları
node_modules/dizinine yükler. Başka bir node.js projesine (modülüne)
install` komutunu çağırarak projeniz için bir bağımlılık olarak yükleyebilirsiniz.
npm run build,
npm build` için bir takma addır ve package.json dosyanızda "build" ne yapacağını belirtmediğiniz sürece hiçbir şey yapmaz. Başka bir projede kullanılmadan önce projeniz için gerekli oluşturma/hazırlama görevlerini gerçekleştirmenizi sağlar.
build, [build belgesine](https://docs.npmjs.com/cli/build) göre
linkve
install` komutları tarafından çağrılır:
Bu, npm link ve npm install tarafından çağrılan tesisat komutudur.
Temel fark şudur::
npm install önceden tanımlanmış şeyi yapan bir npm cli-komutudur, yani Churro tarafından yazıldığı gibi, içinde belirtilen bağımlılıkları yüklemek için package.json
npm run command-name veya npm run-script command-name (*ex.* npm run build) aynı zamanda "command-name" yerine belirtilen isimle özel betiklerinizi çalıştırmak için önceden tanımlanmış bir cli-komutudur. Yani, bu durumda npm run build bir "build" adında özel komut dosyası komutu ve her şeyi yapacaktır içinde belirtilmiştir (örneğin **echo 'hello world' aşağıdaki örnek package.json'da verilmiştir).
Not edilecek noktalar::
Bir şey daha, npm build
ve npm run build
iki farklı şeydir npm build
Churro tarafından yazıldığı gibi yapacaktır, ancak npm run build
package.json
içinde yazılan özel işleri yapacaktır
Ve npm build
ve npm run build
aynı değildir. Demek istediğim, özel derleme (npm run build
) betiği içinde bir şey belirtip npm build
in de aynısını yapmasını bekleyemezsiniz. package.json` dosyanızda doğrulamak için aşağıdaki şeyi deneyin:
{
"name": "demo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build":"echo 'hello build'"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {},
"dependencies": {}
}
ve npm run build
ve npm build
komutlarını teker teker çalıştırdığınızda farkı göreceksiniz. Komutlar hakkında daha fazla bilgi için npm belgelerini takip edebilirsiniz.
Şerefe!!!
Sorunun tam olarak ne olduğunu söylemek zor, ancak temel olarak komut dosyası yapılandırmanıza bakarsanız, "build" uygulamanızı oluşturmak için bir tür derleme aracı kullanırken "start" derlemenin yapıldığını varsayar, ancak dosya orada değilse başarısız olur.
Muhtemelen bower veya grunt kullanıyorsunuz - tipik bir grunt uygulamasının bu betiklerin yanı sıra son derlemeyi silmek için bir "clean" betiği tanımlayacağını hatırlıyor gibiyim.
Derleme araçları genellikle bin/, dist/ ya da build/ klasöründe bir dosya oluşturur ve başlangıç betiği bu dosyayı çağırır - örneğin "node build/server.js". Npm startınız başarısız olduğunda, muhtemelen en son derlemeyi silmek için
npm cleanveya benzerini çağırdığınız için uygulama dosyanız mevcut değildir ve bu da npm start
ın başarısız olmasına neden olur.
npm build'in kaynak kodu - bu sorudaki tartışmaya değinmek gerekirse - isterseniz göz atmanız için github'da bulunmaktadır. Eğer npm build
i doğrudan çalıştırırsanız ve tanımlanmış bir "build" betiğiniz varsa, derleme betiğinizi npm run-script build
olarak çağırmanızı isteyen bir hata ile çıkacaktır, bu yüzden npm run script
ile aynı değildir.
Npm build`in ne yaptığından tam olarak emin değilim, ancak postinstall ve bağımlılıklardaki betiklerin paketlenmesi ile ilgili gibi görünüyor. Bunun, paketi indirdikten sonra bağımlılıkların gerektirdiği herhangi bir CLI derleme komut dosyasının veya yerel kitaplığın belirli bir ortam için oluşturulduğundan emin olabileceğini varsayıyorum. Bu yüzden link ve install bu betiği çağırır.