SORU
2 HAZİRAN 2012, CUMARTESİ


Nasıl node.js projenin kök klasörüne göreli zaman için yapmak gerekli?

Her zaman benim proje kök ve cari modülüne göre değil dosyalarımı gerektirecek istiyorum.

Eğer https://github.com/visionmedia/express/blob/2820f2227de0229c5d7f28009aa432f9f3a7b5f9/examples/downloads/app.js line 6 bakarsanız örneğin görürsünüz

express = require('../../')

Bu gerçekten kötü IMO. Tüm örnekler tek bir düzey köke daha yakın koymak istiyorum düşünün. 30'dan fazla örnek ve her örnek içinde birçok kez güncellemek istiyorum çünkü imkansız olurdu. Bunun için:

express = require('../')

Eğer bir dize projenin kök klasörüne göre o zaman bir dolar ile başlıyor. benim çözüm root göre özel bir durum olurdu:

Herhangi bir yardım, teşekkür ve takdir edilir

Güncelleme 2

Şimdi bir şekilde yazmak için izin verir ve sunucu üzerinde müşteri ve çalışan require.js kullanıyorum. Require.js ayrıca özel yollar oluşturmak için izin verir.-«

Güncelleme 3

Şimdi webpack yudum aldım ve imkanı gerektirir sunucu tarafında modülleri işlemek için kullanıyorum. Bakın işte gerekçesi: http://hackhat.com/p/110/module-loader-webpack-vs-requirejs-vs-browserify/

CEVAP
8 Temmuz 2014, Salı


Browserify Handbook gerçekten ilginç bir bölüm var:

kaçınarak ../../../../../../..

Bir uygulama değil, her şey düzgün ortak etmesinin önünü ait ve özel etmesinin önünü kurma yükü ya da git repo hala. oldukça büyük, birçok durumlarda. Burada kaçınmak için bazı yaklaşımlar vardır ../../../../../../../ göreli yolları sorun.

node_modules

İnsanlar bazen uygulamaya özel modüller koyarak itiraz senin iç kontrol ne kadar açık olmadığı node_modules ayrıca üçüncü parti kontrol etmeden modülleri etmesinin önünü gelen modüller.

Cevap oldukça basit! Eğer sana .gitignore Bir dosya varsa node_modules yoksayar:

node_modules

Sadece iç her ! ile bir istisna ekleyebilirsiniz uygulama modülleri:

node_modules/*
!node_modules/foo
!node_modules/bar

Lütfen dikkat edinunignoreeğer üst ise bir alt dizin, zaten görmezden geldi. node_modules, görmezden gelmek yerine, o yüzden her dizin görmezdeniçindeİle node_modules node_modules/* hile, ve sonra özel durumlar ekleyebilirsiniz.

Uygulama şimdi her yerde 18 *edebilecektir* ya çok büyük ve kırılgan bir akrabası olmadan require('bar') yol.

Sen modülleri bir sürü var ve onlardan daha fazla ayrı tutmak istiyorsanız üçüncü parti modülleri etmesinin önünü yüklü, hepsini koyabilirsiniz node_modules/app gibi node_modules: Bir dizin altında

node_modules/app/foo
node_modules/app/bar

23* *mümkün olacak şimdi ya require('app/bar') uygulamanızda herhangi bir yerden.

** 25, sadece eklenti node_modules/app için bir istisna:

node_modules/*
!node_modules/app

Uygulamanız dönüşümleri paketi yapılandırılmış olsaydı.json, ayrı bir paket oluşturmanız gerekir.kendi json alanına dönüştürmek node_modules/foo node_modules/app/foo bileşen dizini dönüşümler modül sınırları uygulamak arasında yok çünkü. Bu olacak modüller kendi içinde yapılandırma değişiklikleri karşı daha güçlü olun uygulaması kolay bağımsız paketleri yeniden olacak uygulama dışında.

sembolik link

Eğer başka bir uygulama üzerinde çalışıyorsanız kullanışlı hile sembolik ve lib/sembolik windows destek gerek yok ya app/ node_modules içine klasör. Proje kökünden, yapmak:

ln -s ../lib node_modules/app

ve şimdi her yerde proje dosyaları gerektirir yapabileceksiniz 34 ** require('app/foo.js') lib/foo.js yaparak.

özel yolları

Bazı yerlerde $NODE_PATHkullanma hakkında konuşmak görebilirsiniz değişken çevre veya 38* *düğüm dizinleri eklemek ve browserify modülleri bulmak için.

En diğer platformlar, yol shell tarzı bir dizi kullanarak farklı $NODE_PATH ile dizin düğümü göre değil, olumlu. node_modules etkili kullanma dizin yapma.

Bu uygulama daha sıkı bir çalışma ile birleştiğinde olmasıdır çok fazla hareket var ve ortam yapılandırma bölümleri uygulama sadece ortamı Kur düzgün çalışır.

düğüm ve iki destek ama kullanımını vazgeçirmek browserify $NODE_PATH.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hollyscoop

    Hollyscoop

    30 Ocak 2007
  • J Medema

    J Medema

    11 EKİM 2006
  • Phandroid

    Phandroid

    26 Ocak 2009