Nuget'i jQuery 1.9.x / 1.x yolunda tutabilir miyim (2.x'e yükseltmek yerine)?


86

Çoğu insan gibi, güncel kalmak için jQuery Nuget paketini kullanıyorum .

Ancak, jQuery 2.0 sürümüyle birlikte şimdi jQuery 1.9.1'i 2.0'a yükseltmem isteniyor. Şu anda sitelerimde, tarayıcıların 'eski' sürümlerini kullanan ve 1.9.x ve jQuery Migrate'e bağlı kalmayı tercih ettiğim yeterince ziyaretçim var .

Bir paketin (jQuery veya başka türlü) güncellemelerini kontrol ederken Nuget'e belirli bir sürüme (1.9.x) bağlı kalmasını söyleyecek bir şekilde var mı?

Visual Studio 2010/2012 uzantılarını kullanıyorum, ancak bu sorunu çözmek için VS içinde komut satırı arayüzünü kullanmam gerekirse, kesinlikle kullanacağım.

Not: Aklımın arkasındaki bir şey, güncellemeyi bozmalarıdır. JQuery 1.9.x ve 2.0.x / 2.x oldukça farklı olduğundan, bunun yerine bir jQuery 2 (.0.x | .x) paketi oluşturmaları gerektiği anlaşılıyor.

Elbette, aslında 2.x'e güncellemek isteyen kişilerin bunu bilmeleri ve yüklemek istedikleri paketi değiştirmeleri gerekecektir. Ama kırılma değişiklikleri içerdiği göz önüne alındığında, belki bu daha iyi?


2
1.10.x çıktığı için başlığı biraz daha net hale getirmek için güncelledim.
James Skemp

2
Tek nuget paketini sakladıkları için, her iki jQuery sürümünü de ekleseler iyi olurdu, böylece tek bir nuget paketinde hem 1.x hem de 2.x şubelerine sahip olursunuz ve sonra istediğinizi referans alabilirsiniz.
John

@John - Ben ... bu fikri gerçekten beğendim. Paket aslında belirli sürüme yapılan herhangi bir referansı güncellemiyor. Aklıma gelen tek şey aslında 2.x veya 1.x gerektirebilecek projeler? Ancak bunun işe yarayıp yaramayacağı ilginç olurdu. +1
James Skemp

Yanıtlar:


117

Bence bu, paket yazarının yaptığı bir hata. Birkaç tarayıcı için desteği kaldıran bir güncelleme, ayrı bir sürüm 2 nuget paketine dönüştürülmeli ve buna göre, yani önemli sorumluluk reddi beyanları ile reklamı yapılmalıdır. 1.9 kitaplığı eski değildir ve gelecekte daha fazla güncelleme alacaktır. Paket yazarı ile iletişim halindeyim ve bir yanıt alırsam daha fazla yazacağım.

Bu arada, paketinizin sürümünü aşağıdaki sözdizimini kullanarak sınırlandırabilirsiniz packages.config:

<package id="jQuery" version="1.9.1" allowedVersions="[1.9.1]" />

Sürüm kısıtlamaları hakkında daha fazla bilgi burada:

http://docs.nuget.org/docs/reference/Versioning

Yapılandırma değişikliğini yaptıktan sonra, bir güncelleme jQuery paketinizi 2.0 sürümüne yükseltmemelidir. Geçmişte UI paket yöneticisinin allowedVersionsözniteliğe ( https://nuget.codeplex.com/workitem/1891 ) uymaması ile ilgili sorunlar olmuştur , bu nedenle bu sorunla karşılaşırsanız komut satırını kullanmanız gerekebilir.

Ancak bunların hiçbiri, 1.9 şubesi güncellendiğinde ne olacağı sorununu çözmez çünkü paket akışı artık 2.0+ yolunda olacaktır. 'Eski' 1.x sürümünü desteklemek için özel olarak yazılmış yeni bir nuget paketine geçmeniz veya komut dosyasını her seferinde manuel olarak kopyalamanız gerekeceğini varsayıyorum.

Her durumda, daha fazlasını öğrendiğimde bunu güncelleyeceğim.

Düzenle:

Paket yazar 1.x hem belirtmiştir ve 2.x yolları, gelecekte desteklenen paket besleme yerine onları bölünmüş olma paralel versiyonlarını içerecek yani edilecektir. Görebildiğim kadarıyla çözüm, 2.x sürümünde bir güncellemeyi önlemek için paket yapılandırma düzeyinde bir sürüm kısıtlaması kullanmaktır, örneğin:

<package id="jQuery" version="1.9.1" allowedVersions="[1.9.1,2)" />

(İçinde hem minimum hem de maksimum sürümleri belirtmek allowedVersions, 2.x sürümüne geçiş riski olmadan güncellemeye izin vermelidir. Bu arada, sağ parantez tuhaf görünüyor, ancak doğru - "sürüm 2'den küçük" anlamına geliyor.)


Dave, paket yazarına ulaştığın için teşekkürler. JQuery 2.0 duyurusu blog gönderisine bunun olası bir sorun olduğu hakkında bir yorum gönderdim; nedense jQuery'nin jQuery tarafından sağlandığını düşündüm ve onlar adına işlenen jQuery Migrate idi. Daha fazla kazmalıydım. +1
James Skemp

@JamesSkemp - Evet, beni buraya getiren duyuru gönderisindeki sorgundu :) Soruyu gündeme getirdiğin için teşekkürler - Bu konuya dikkat çekersen kendim yakalanırdım. Durum gerçekte olması gerekenden daha karmaşık, ancak güncellenmiş cevabın yardımcı olacağını umuyorum. Sürüm oluşturmanın daha kolay bir yolunu bulursam, daha fazla bilgi ekleyeceğimden emin olacağım.
Dave R.

2
NuGet kullanıcı arabiriminde, packages.config dosyasındaki güncellemeye izin vermeseniz bile jQuery 2.0'a güncelleme istemine neden olan bir hata vardır. JQuery 2.0'ın NuGet 2.5'e bu kadar yakın çıkması ironik. Sürüm 2.5'te Tümünü Güncelle düğmesi vardır ve bu hata olmasaydı harika olurdu.
Edward Brey

2
Şimdi jquery1nuget üzerinde sadece 1.x şubesini izleyen bir paket olduğunu gördüm .
Chris J

1
Benim için sadece konsol güncellemesi, kullanıcı arayüzü güncellemesi çalışmıyor (allowVersions eklendikten sonra). Kullanıcı arayüzü güncelleme denendiğinde herhangi bir projenin seçilmesine izin vermiyor
RockResolve

19

sürümü belirlemeye ne dersiniz?

PM> Install-Package jQuery -Version 1.9.1

Referanslar: http://nuget.org/packages/jQuery/1.9.1


Sorduğum ilgili soru: stackoverflow.com/q/16126338/11912 Kısacası işe yarıyor, ama klunky. Ve bir kör güncelleme onu bozar.
James Skemp

Aslında konsolu jQuery sürüm belirleme sorunundan sonra daha çok kullanmaya başladım (ona öyle diyeceğim). En iyi çözüm değil, +1.
James Skemp

+1 çünkü yanlışlıkla 2.x'e yükseltme yaptıysanız ve 1.9'a geri dönmek VE 2.x'e yükseltmeyi önlemek istiyorsanız, onaylanan yanıttan kısıtlamayı eklemeden önce / sonra manuel olarak bu şekilde düşürmeniz gerekir.
Pluc

8

Nuget artık yalnızca 1.x dalını izleyen bir jquery1 paketine sahip, bu nedenle bunun için çekirdek jQuery paketini değiştirebilmelisiniz.


İyi bul. Sayfanın daha okunabilir olması için biraz çalışmaya ihtiyaç duysa da, jQuery'nin birden çok sürümüne sahip olmanın sağladığı esnekliği seviyorum.
James Skemp

Bu bizi John'un soru hakkındaki yorumuna geri götürse de; İçinde hem 1.x hem de 2.x olan, her birinin güncel sürümüyle birlikte bir paket olsaydı iyi olurdu.
James Skemp

2
Ancak jQuery bağımlılıkları olan başka kitaplıklarınız varsa, her zaman orada olacaktır, en iyi ihtimalle jQuery 2.0'ın yanında buna sahip olabilirsiniz. Yalnızca bağımlı jQuery 1.x istiyorsanız, bu işe yaramaz ve Dave R'nin cevabına bakmanız gerekir
RockResolve

4

@TeYoU için en üstteki iki çözümü birleştirdim

Önce paketi paket yöneticisi konsolundan yükledim:

Araçlar Menüsü -> Kitaplık Paket Yöneticisi -> Paket Yöneticisi Konsolu

PM> Install-Package jQuery -Version 1.9.1

Sonra packages.config dosyasını @Dave R. dediği gibi düzenledim:

<package id="jQuery" version="1.9.1" allowedVersions="[1.9.1,2)" />

Daha sonra Nuget Manager'ı kullanarak şu an 1.10.2 olan mevcut sürüme güncelledim ve harika çalıştı.


1
Aslında bulduğum ilk sürümde sürümü belirtmenize gerek yok. izin verilen sürümleri eklerseniz, ardından bir güncelleme çalıştırırsanız, sizi eski sürüme düşürür ...
Martin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.