Posso mantenere Nuget sul percorso jQuery 1.9.x / 1.x (invece di eseguire l'aggiornamento a 2.x)?


86

Come la maggior parte delle persone, sto usando il pacchetto jQuery Nuget per tenermi aggiornato.

Tuttavia, con il rilascio di jQuery 2.0 ora mi viene chiesto di aggiornare jQuery 1.9.1 a 2.0. In questo momento ho abbastanza visitatori sui miei siti che utilizzano versioni "antiche" di browser che preferirei utilizzare con 1.9.xe jQuery Migrate .

C'è comunque da dire a Nuget di attenersi a una versione particolare (1.9.x) durante il controllo degli aggiornamenti di un pacchetto (jQuery o altro)?

Sto usando le estensioni di Visual Studio 2010/2012, ma se ho bisogno di usare l'interfaccia della riga di comando all'interno di VS per aggirare questo problema, lo farò sicuramente.

Nota: una cosa nella parte posteriore della mia mente è che hanno incasinato l'aggiornamento. Poiché jQuery 1.9.x e 2.0.x / 2.x sono abbastanza diversi, sembra che avrebbero dovuto creare invece un pacchetto jQuery 2 (.0.x | .x).

Ovviamente le persone che vogliono effettivamente aggiornare a 2.x dovranno saperlo e cambiare il pacchetto che vogliono installare. Ma dato che contiene modifiche sostanziali, forse è meglio?


2
Dal momento che 1.10.x è uscito, ho aggiornato il titolo per renderlo un po 'più chiaro.
James Skemp,

2
Dal momento che mantengono il singolo pacchetto nuget, sarebbe bello se aggiungessero entrambe le versioni di jQuery, quindi avresti entrambi i rami 1.x e 2.x in un singolo pacchetto nuget e quindi potresti fare riferimento a quello che desideri.
John

@ John - Mi ... piace molto l'idea. Non è che il pacchetto aggiorni effettivamente i riferimenti alla versione specifica. L'unica cosa a cui riesco a pensare sono progetti che potrebbero effettivamente richiedere 2.xo 1.x? Ma sarebbe interessante sapere se questo funzionerebbe. +1
James Skemp

Risposte:


117

A mio parere, questo è un errore da parte dell'autore del pacchetto. Un aggiornamento che rimuove il supporto per diversi browser avrebbe dovuto essere inserito in un pacchetto nuget versione 2 separato e pubblicizzato di conseguenza, cioè con significative esclusioni di responsabilità. La libreria 1.9 non è legacy e riceverà ulteriori aggiornamenti in futuro. Sono stato in contatto con l'autore del pacchetto e scriverò di più se ricevo una risposta.

Nel frattempo, puoi limitare la versione del tuo pacchetto usando la seguente sintassi nel tuo packages.config:

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

Ci sono ulteriori informazioni sui vincoli di versione qui:

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

Dopo aver apportato la modifica alla configurazione, un aggiornamento non dovrebbe aggiornare il pacchetto jQuery alla versione 2.0. In passato si sono verificati problemi con il gestore dei pacchetti dell'interfaccia utente che non rispettava l' allowedVersionsattributo ( https://nuget.codeplex.com/workitem/1891 ), quindi potrebbe essere necessario utilizzare la riga di comando se si verifica questo problema.

Tuttavia, niente di tutto ciò risolve il problema di ciò che accade quando il ramo 1.9 viene aggiornato perché il feed del pacchetto sarà ora sulla traccia 2.0+. Presumo che dovrai passare a un nuovo pacchetto nuget scritto appositamente per supportare la versione 1.x "legacy" o copiare lo script manualmente ogni volta.

In ogni caso lo aggiornerò quando avrò maggiori informazioni.

Modificare:

L'autore del pacchetto ha dichiarato che entrambi i percorsi 1.x e 2.x saranno supportati in futuro, cioè il feed del pacchetto conterrà versioni parallele invece di essere divise. Per quanto posso vedere, la soluzione è utilizzare un vincolo di versione a livello di configurazione del pacchetto per impedire un aggiornamento alla versione 2.x, ad esempio:

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

(Specificare entrambe le versioni min e max allowedVersionsdovrebbe consentire l'aggiornamento senza rischiare di passare alla versione 2.x. A proposito, la parentesi destra sembra strana, ma è corretta: significa "inferiore alla versione 2".)


Dave, grazie per aver contattato l'autore del pacchetto. Ho postato un commento sul post del blog di annuncio di jQuery 2.0 su questo possibile problema; per qualche ragione pensavo che jQuery fosse mantenuto da jQuery, e che fosse jQuery Migrate che veniva gestito per loro conto. Avrebbe dovuto scavare oltre. +1
James Skemp

@JamesSkemp - Sì, è stata la tua domanda sul post dell'annuncio che mi ha portato qui :) Grazie per aver sollevato la domanda - Sarei stato colto di sorpresa se avessi portato l'attenzione sul problema. L'intera situazione è un po 'più complicata di quanto dovrebbe essere realmente, ma spero che la risposta aggiornata aiuti. Se trovo un modo più semplice per gestire il controllo delle versioni, mi assicurerò di aggiungere ulteriori informazioni.
Dave R.

2
L'interfaccia utente di NuGet ha un bug che fa sì che richieda l' aggiornamento a jQuery 2.0 anche se non si consente l'aggiornamento in packages.config. È ironico che jQuery 2.0 sia uscito così vicino a NuGet 2.5. La versione 2.5 ha un pulsante Aggiorna tutto, che sarebbe fantastico se non fosse per questo bug.
Edward Brey

2
Ho visto che ora c'è un jquery1pacchetto su nuget, che tiene traccia solo del ramo 1.x.
Chris J

1
Solo l'aggiornamento della console, non l'aggiornamento dell'interfaccia utente funziona per me (dopo aver aggiunto le versioni consentite). L'interfaccia utente non consente la selezione di alcun progetto quando si tenta l'aggiornamento
RockResolve

19

che ne dici di specificare la versione?

PM> Install-Package jQuery -Version 1.9.1

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


Domanda correlata che ho posto: stackoverflow.com/q/16126338/11912 In breve, funziona, ma è klunky. E un aggiornamento cieco lo rompe.
James Skemp

In realtà ho iniziato a utilizzare la console molto di più dopo lo snafu del controllo delle versioni di jQuery (lo chiamerò così). Non è la soluzione migliore, ma +1.
James Skemp

+1 perché se hai già aggiornato a 2.x per errore e vuoi tornare a 1.9 E impedire l'aggiornamento a 2.x, devi eseguire il downgrade manualmente in questo modo prima / dopo aver aggiunto la restrizione dalla risposta approvata.
Pluc

8

Nuget ora ha un pacchetto jquery1 che tiene traccia solo del ramo 1.x, quindi dovresti essere in grado di sostituire il pacchetto jQuery principale con questo.


Buona scoperta. Sebbene la pagina abbia bisogno di un po 'di lavoro per essere più leggibile, mi piace la flessibilità che consente di avere più versioni di jQuery disponibili.
James Skemp

Anche se questo ci riporta al commento di John sulla domanda; sarebbe bello se ci fosse un pacchetto che contenesse solo 1.x e 2.x, con la versione corrente di ciascuno.
James Skemp

2
Ma se hai altre librerie con dipendenze jQuery, sarà sempre lì, nella migliore delle ipotesi potresti avere questo insieme a jQuery 2.0. Se vuoi solo jQuery 1.x dipendente, questo non funzionerà e dovrai guardare la risposta di Dave R
RockResolve

4

Ho combinato le due soluzioni dall'alto per @TeYoU

Per prima cosa ho installato il pacchetto dalla console del gestore pacchetti:

Menu Strumenti -> Gestione pacchetti libreria -> Console Gestione pacchetti

PM> Install-Package jQuery -Version 1.9.1

Quindi ho modificato il packages.config come dice @Dave R.:

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

Poi ho aggiornato alla versione attuale, attualmente 1.10.2 utilizzando Nuget Manager e ha funzionato a meraviglia.


1
in realtà non è necessario specificare la versione sul primo che ho trovato. se aggiungi le versioni consentite, quindi esegui un aggiornamento, verrà eseguito il downgrade ...
Martin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.