SORU
20 Temmuz 2012, Cuma


Etmesinin önünü komut göndermek için komut satırı argümanları

Benim scripts bölümü package.json şu anda bu gibi görünüyor:

"scripts": {
    "start": "node ./script.js server"
}

...npm start sunucu başlatmak için çalıştırabilirsiniz anlamına gelir. Şimdiye kadar çok iyi.

Ancak, npm start 8080 gibi bir şey çalıştırmak mümkün olmak istiyorum ve bağımsız değişken(ler) script.js geçti (12* =^ örneğin*. var node ./script.js server 8080). Bu mümkün mü?

CEVAP
18 Ocak 2013, Cuma


2014.10.30 düzenleme:It's possible to pass args to npm run as of npm 2.0.0

Sözdizimi aşağıdaki gibidir:

npm run [command] [-- <args>]

Gerekli -- not. Eğer package.json varsa

"scripts": {
    "grunt": "grunt"
}

Eşdeğer

grunt task:target

etmesinin önünü üzerinden çalıştırmak olacaktır

npm run grunt -- task:target


2013.10.03 düzenleme:Doğrudan şu anda mümkün değil. Ama istiyorsun davranışı uygulamak için GitHub issue opened on npm bir ilgili yok. Anlaşılan uzlaşma bu hayata sahip olmaktır, ama başka bir sorun daha önce çözüldü bağlıdır.


Orijinal cevabı:Geçici bir çözümü bir tür olarak çok kullanışlı olmasa da, aşağıdaki gibi yapabilirsiniz

Söyle package.json paket adı myPackage da var

"scripts": {
    "start": "node ./script.js server"
}

Ekle package.json sonra:

"config": {
    "myPort": "8080"
}

Ve script.js:

// defaulting to 8080 in case if script invoked not via "npm run-script" but directly
var port = process.env.npm_package_config_myPort || 8080

Bu şekilde, varsayılan olarak npm start 8080 kullanacak. Ancak bu değer dahili depolama npm tarafından saklanacaktır) yapılandırabilirsiniz:

npm config set myPackage:myPort 9090

npm start, 9090 yürütmesini kullanılacak zaman sonra, (package.json varsayılan geçersiz olur).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gavin Hoey

    Gavin Hoey

    21 Aralık 2007
  • MisterBrightside

    MisterBright

    24 Mart 2006
  • sWooZie

    sWooZie

    9 ŞUBAT 2006