2014-06-12 25 views
15

Ön uç kodunu paketlemek için tarayıcıyı kullanıyorum. Şimdiye kadar çok iyiydi, ama npm ve non npm paketlerini karıştırmakta zorluk çekiyorum. Örneğin, jQuery eklentilerinin CJS olmayan sürümleri ile jQuery npm sürümünü kullanarak.npm jQuery ve npm olmayan eklentilerle tarayıcıda gezinme kullanımı

Geçerli çözümüm jQuery's dist 'i işaret etmek için package.json içindeki browser anahtarını kullanmak ve sonra eklentilerin bağımlılığı olarak eklemek için browserify-shim kullanın.

Bunu şu anda sahip olduğumdan daha temiz bir yolu var mı?

Düzenleme: i anda tüm benim bağımlılıkları yönetmek için NPM ve package.json kullanmaya çalışıyorum, bu yüzden bu proje üzerinde çardak kullanmak istemiyoruz. Bana deli diyebilirsiniz:)

Package.json

"dependencies": { 
    "jquery": "~2.1.0", 
    "browserify": "latest", 
    "browserify-shim": "^3.5.0", 
    "jquery-waypoints": "[email protected]:imakewebthings/jquery-waypoints.git", 
    "jquery-validation": "git://github.com/jzaefferer/jquery-validation" 
    }, 
    "browser": { 
    "jquery": "./node_modules/jquery/dist/jquery.js", 
    "jquery-waypoints": "./node_modules/jquery-waypoints/waypoints.js", 
    "jquery-validate": "./node_modules/jquery-validation/build/release.js" 
    }, 
    "browserify-shim": { 
    "jquery": "$", 
    "jquery-waypoints": { 
     "depends": [ 
     "jquery" 
     ] 
    }, 
    "jquery-validate": { 
     "depends": [ 
     "jquery" 
     ] 
    } 
    }, 
    "browserify": { 
    "transform": [ 
     "browserify-shim" 
    ] 
    } 
+0

Şu anda aynı sorunu ele alıyorum. '/ Node_modules/jquery/dist/jquery.js' ile 'jquery' takma, son pakette jQuery'nin yinelenen bir kopyasını oluşturur mu? Ya da, ne 'package.json' ile çalışmıyor? –

+0

@ MichaelMartin-Smucker İyi çalışıyor ('jquery' kopyası yok) ama işleri şemayla yapılandırmaktan hoşlanmıyorum config - tembelim :). İyi şanslar! –

+0

Teşekkürler bir demet! Bu soru sorumu cevapladı. JQuery alamadım.Çalışmak için mmenu, ama kodun nasıl olduğunu gösterdi. Bir soruda çalışma kodunu göstermek için +1 :) – xlttj

cevap

1
şöyle yapardım

:

  1. kullanın debowerify senin böyle olacaktır yılında, kameriye mevcut kütüphaneler dahil etmek, jquery geçiş noktaları, jquery-geçerlilik

  2. Burada bulunan npm paketinde bulunan jquery'yi kullanın. https://github.com/jquery/jquery

Bu nedenle, aynı zamanda şu an için browserify-dolgu çıkarıyoruz.

+0

Cevabınız için teşekkür ederiz. Şu an sadece npm'ye gitmeye çalışıyorum, bu yüzden bower'ı kullanmaktan kaçınmak istiyorum. Sorunu açıklığa kavuşturmak için güncelledik. –

+0

Önerilen yolu denedim ve jquery-mobile ile şanssız kaldım. Debowerify paketi paketten getirdi ama deamdify bir amd modülünden nasıl kurulacağını bilmiyordu. Beklenmedik belirteç hataları var. Hmmm ... – Glitches

0

Sen (örn sizin jquery ilanına "$" set) inanmak doğru bağımlılıkları tanımlayan eksik:

"plugin": { 
    "exports": "plugin", 
    "depends": [ 
    "jquery:$" 
    ] 
},... 
+0

Cevabınız için teşekkürler, ama ne demek istediğinden emin değilim? Snippet'inizi biraz daha ayrıntılı hale getirip detaylandırır mısınız? –

+0

Erk. Başka bir çözüm ararken sorunuzu karşı karşıya getirdiniz, bu yüzden çok hızlı bir şekilde okuyun. Sadece sorunuzu yeniden okuyun ve çalıştığınızı fark ettiniz, ancak browserify-shim aracılığıyla elle oynamayı sevmeyin (çalışmamayı düşünmüştüm, potansiyel olarak ne atayacağınızı tam olarak belirtmediniz çünkü Eklentinizdeki $/jQuery Nasıl çalıştığını görüyorsanız, benim gibi aynı gemidesiniz: "argh, browserify-dostu yapmak için kullanmam gereken başka bir jQuery eklentisi." Ne yazık ki başka bir yol yok. Ben farklı bir paket yöneticisi kullanarak kısa buldum. – Ted

+0

Gotcha. Bu mantıklıdır. Başka birinin acı duyduğumu bildiğine sevindim. Daha iyi bir yol bulursanız lütfen güncelleyin :) –

1

browser yönergesi jquery yazarken istediğini belirtmek için sadece bir takma addır. jquery için varsayılannode_modules yılında yoludur, bu nedenle satır:

"jquery": "./node_modules/jquery/dist/jquery.js", 

... gereksiz ve size Browserify Shim yapılandırmasında "depends": ["jquery"] yazarken, jquery zaten ./node_modules/jquery/dist/jquery.js işaret, çünkü çıkarabilirim browser anahtarınızda bu satır olmadan. Aslında, muhtemelen browser yönergesini tamamen kaldırabilirsiniz, bu jQuery eklentileri 'package.json dosyalarındaki yapılandırmayı denetlemeniz gerekir, ancak büyük olasılıkla browser geçersiz kılma olmadan zaten sahip olduğunuz gibi zaten takma addır. Aksi takdirde bunu uygulamak için daha temiz bir yol olduğunu düşünmüyorum. Senin gibi CJS olmayan jQuery eklentileri shim için Browserify Shim kullanmanız gerektiğini söyledi ve doğru şekilde yapıyorsun.