2016-01-22 23 views
13

Bir web uygulaması için çeşitli derleme görevlerimi çalıştırmak için npm kullanmayı denemek istiyorum. Ben şöyle benim package.json bir scripts alanını ekleyerek bunu yapabilirsiniz biliyorum: Seçeneklerin bir grup ile daha karmaşık komutlar olduğunda bu hantallaşırBash komut dosyalarının npm ile çalıştırılması

"scripts": { 
    "build": "some build command" 
}, 

. Bu komutları bir bash komut dosyasına veya bu satırlardaki bir şeye taşımak mümkün mü? Bir şey gibi:

"scripts": { 
    "build": "build.sh" 
}, 

nerede npm run buildbuild.sh dosyasındaki komutları yürütmek ki?

this numaralı telefondan mesaj okunuyormuş gibi görünüyor, fakat tam olarak nerede build.sh dosyamı bıraktığımı veya bir şeyleri özlüyor olsam da net değil.

+7

Bunu yapma. Düğüm her yerde çalışır. Bash yok. Bash'ta ne yapıyor olursanız olun **, node ** 'da yapabilirsiniz ve CLI çağırması bile paket bağımlılıkları kullanılarak yapılabilir. İhtiyacın var mı? rimraf yükleyin, sonra bunu bir [npm betikinde] kullanın (http://www.slideshare.net/k88hudson/advanced-frontend-automation-with-npm-scripts). mkdir -p? 'mkdirp'’yi kurun ve sonra bunu bir npm komut dosyasında kullanın. * Platform bağımsız evrensel bir betik dili * seçeneğiniz var, o zaman gitmeyin ve sadece 'Nix' gibi davranmayın. Komut satırı çok mu karmaşık? "Grunt" veya "gulp" gibi bir görev koşucusu kullanın. Evrensel olsun. –

+1

"CLI çağırması bile paket bağımlılıkları kullanılarak yapılabilir" dediğinizde, bu gibi bir şeyden bahsediyorsunuz (http://blog.npmjs.org/post/118810260230/building-a-simple-command-line-tool -with-NPM)? –

+0

kapatın ancak hayır, bağlı olduğum slaytları okuyun. İnsanların global olarak yüklenmesine gerek kalmadan "grunt" veya "gulp" veya "mkdirp" gibi CLI araçlarıyla gelen düğüm modüllerini yükleyebilir ve sonra bunları global olarak yüklenmiş gibi çalıştırabilirsiniz. npm komut dosyasında, "build" gibi: "mkdirp build && daha az stil/index.less> static/css/style.css && webpack" '. Çağrınız komutlar npm tarafından yönetilen sürece (yani paket.json bağımlılık listelerinde), bu sadece çalışır. Herhangi bir "bu sadece bir OS için çalışır" komutu için, evrensel olarak aynı şeyi yapan bir düğüm modülü kullanın. –

cevap

23

Onun tamamen mümkün ...

da
"scripts": { 
    "build": "./build.sh" 
}, 

, sen #!/usr/bin/env bash da

emin dosyayı yürütmek için gerekli izinlere sahip olun sizin bash dosyasının en üstünde bir karma patlama koymak emin olun

chmod +x ./build.sh 
+0

Bash dosyası nereye giderdi? Node_modules 'bin' dizininde olması gerekiyor mu? –

+1

sadece istediğiniz yere koyabilirsiniz paket.json'daki göreceli yolu koyduğunuzdan emin olun örn. "Build": ". ./path/to/my/awesome/build/file/build.sh" ' – eblahm

+0

nedir ile. önünde? Neden sadece "inşa" değil: "./build.sh"? –