2012-08-31 14 views
6

Bir node.js uygulamasında iç modülleri ele almanın tercih edilen yolu ne olurdu?İç Node.JS modülleri nasıl yönetilir?

Şu anda, oldukça büyük bir uygulama var ve npm aracılığıyla yüklü birkaç bağımlılık var. .gitignore numaralı telefondan node_modules var. Bu yüzden depoda değil. Modüllerin sürümlerini dondurmak için npm shrinkwrap kullanıyoruz, bu nedenle, dağıtım sırasında, node_modules'a ihtiyacımız olan npm install'u bir araya getiriyoruz.

Sorun, uygulama dışarı çıkıyor olduğundan, küçük modüller halinde bölmek istiyoruz. Şimdi, foo modülünü oluşturup node_modues içine koyarsam, repo'da izin vermem gerekir. Bu, node_modules'da hem yok sayılan hem de denetlenmiş modüllere sahip olmamak için düzgün görünmüyor.

Bunları npm kayıt defterinde yayınlayamayız çünkü gerçekten "genel" değiller.

Farkında olmadığım belirgin bir çözüm var mı?

+1

Özel kütüphanelerimi/modüllerini npm_modules yerine, projenin altındaki '' lib 'dizinine yapıştırıyorum. Bu şekilde Git'e de dahil edilebilirler. –

+0

Evet, bir lib klasörüne sahip olmak ve ('./ lib/myThing') gerektirir. –

+2

Lib klasörüyle, gereksinim duyduğum her defasında modülleri açıkça belirtmem gerekiyor. Onlara çok ihtiyacım var :) Her yerden. Gereksinimden hoşlanmıyorum ("../../../../../ lib/foo") '. Bunları düğüm modüllerinde bulundurmak daha kolay erişim sağlar. –

cevap

7

Üçüncü taraf repo içermeyen şeyleri şirket içi revizyon kontrollü içeriklerle karıştırmamanızın estetiğini kabul ediyorum.

NODE_PATH arama yolu değişkeni burada size yardımcı olabilir, revizyon kontrolü altındaki içeriklerle farklı bir dizin kullanabilirsiniz.

http://nodejs.org/api/modules.html

karmaşıklığı vs esneklik için iştah bağlı olarak, bir derleme adımı düşünün ki sen ille (bir çıkış dizine, muhtemelen "adlı node_modules" onları tutmak ancak yerden aslında kopyalar çeşitli düğüm modülleri).

+0

NODE_PATH burada en zarif yaklaşım gibi görünüyor. Ben sadece bir şeyleri kütüphanede saklayabilirim ve ihtiyaç duydukları isimle referans gösterebilirim. Ortam değişkeni uygun şekilde belgelendiğinden, bunun bir kesmek veya bir şey olarak düşünülebileceğini düşünmüyorum :) Teşekkürler. –

5

Yaygın bir çözüm, modülleri bir yerde özel bir Git deposunda depolamak ve sonra bir bağımlılık olarak bir git:// URL kullanmaktır; npm, depoları bağımlılıklar olarak nasıl klonlayacağını bilir.

+0

Teşekkürler, bunu değerlendirdim, ancak bir şekilde sunucularımızın özel git dosyalarına erişmesine izin vermeliyim. Ya sunucular genel anahtar veya ip aralığı üzerinden. Bu olsa işe yarayacaktı. –