Nugetを(2.xにアップグレードする代わりに)jQuery 1.9.x / 1.xパスに保持できますか?


86

ほとんどの人と同じように、私はjQueryNugetパッケージを使用して最新の状態に保っています。

ただし、jQuery 2.0のリリースに伴い、jQuery1.9.1を2.0にアップグレードするように求められます。この時点で私は、私はむしろ1.9.xとに固執したいというブラウザの「古代」のバージョンを使用して、私のサイト間で十分な訪問者の持っているjQueryの移行を

パッケージ(jQueryなど)の更新を確認するときに、特定のバージョン(1.9.x)を使用するようにNugetに指示する方法はありますか?

Visual Studio 2010/2012拡張機能を使用していますが、この問題を回避するためにVS内のコマンドラインインターフェイスを使用する必要がある場合は、必ず使用します。

注:私の心の奥にあることの1つは、彼らがアップデートを台無しにしたことです。jQuery1.9.xと2.0.x / 2.xはかなり異なるため、代わりにjQuery 2(.0.x | .x)パッケージを作成する必要があったようです。

もちろん、実際に2.xに更新したい人は、それについて知って、インストールするパッケージを切り替える必要があります。しかし、それが重大な変更を含んでいることを考えると、多分それはより良いですか?


2
1.10.xがリリースされたので、タイトルを更新してもう少しわかりやすくしました。
James Skemp 2013年

2
彼らは単一のnugetパッケージを保持しているので、両方のjQueryバージョンを追加しただけで、1つのnugetパッケージに1.xと2.xの両方のブランチがあり、必要なものを参照できると便利です。
ジョン

@ジョン-私は...そのアイデアが本当に好きです。パッケージが特定のバージョンへの参照を実際に更新するわけではありません。私が考えることができる唯一のことは、実際に2.xまたは1.xを必要とする可能性のあるプロジェクトですか?しかし、これがうまくいくかどうかは興味深いでしょう。+1
James Skemp 2013年

回答:


117

私の意見では、これはパッケージ作成者側の間違いです。複数のブラウザーのサポートを削除する更新は、別のバージョン2 nugetパッケージに作成され、それに応じて、つまり重要な免責事項とともにアドバタイズされる必要があります。1.9ライブラリはレガシーではなく、将来さらにアップデートを受け取る予定です。私はパッケージの作者と連絡を取り合っており、返信があればさらに書き込みます。

暫定的に、次の構文を使用してパッケージのバージョンを制限できますpackages.config

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

バージョンの制約に関する詳細は、次のとおりです。

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

構成を変更した後、更新によってjQueryパッケージが2.0リリースにアップグレードされないようにする必要があります。過去にUIパッケージマネージャーがallowedVersions属性(https://nuget.codeplex.com/workitem/1891)を尊重しないという問題があったため、この問題が発生した場合はコマンドラインを使用する必要がある場合があります。

ただし、パッケージフィードが2.0以降のトラックにあるため、1.9ブランチが更新されたときに何が起こるかという問題は解決されません。「レガシー」1.xバージョンをサポートするために特別に作成された新しいnugetパッケージに切り替えるか、スクリプトを毎回手動でコピーする必要があると思います。

いずれにせよ、私はもっと学ぶときにこれを更新します。

編集:

パッケージの作成者は、1.xパス2.xパスの両方が将来サポートされる述べています。つまり、パッケージフィードには、分割されるのではなく、並列バージョンが含まれる予定です。私が見る限り、解決策は、パッケージ構成レベルでバージョン制約を使用して、2.xバージョンへの更新を防ぐことです。例:

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

(で最小バージョンと最大バージョンの両方を指定allowedVersionsすると、2.xバージョンに切り替えるリスクなしに更新できるはずです。ちなみに、右括弧は奇妙に見えますが、正しいです。つまり、「バージョン2未満」を意味します。)


デイブ、パッケージの作者に連絡してくれてありがとう。これが問題の可能性があることについて、jQuery2.0の発表ブログ投稿にコメントを投稿しました。どういうわけか、jQueryはjQueryによって維持されていると思いましたが、それらに代わって処理されたのはjQueryMigrateでした。さらに掘ったはずです。+1
James Skemp 2013

@ JamesSkemp-はい、私をここに連れてきたのは発表の投稿に対するあなたの質問でした:)質問を提起してくれてありがとう-あなたが問題に注意を向けていたら私は自分自身に捕らえられたでしょう。全体の状況は、実際に必要な状況よりもかなり複雑ですが、更新された回答がお役に立てば幸いです。バージョニングを処理する簡単な方法に出くわした場合は、必ずさらに情報を追加します。
デイブR.

2
NuGet UIには、packages.configで更新を許可しなくても、jQuery2.0への更新を求めるプロンプトが表示されるバグがあります。jQuery2.0がNuGet2.5に非常に近いものになったのは皮肉なことです。バージョン2.5には[すべて更新]ボタンがあります。このバグがなければ、これはすばらしいことです。
エドワードブレイ2013

2
jquery11.xブランチのみを追跡するパッケージがnugetにあることを確認しました。
クリスJ

1
UIの更新ではなく、コンソールの更新のみが機能しています(allowedVersionsが追加された後)。UIは、更新が試行されたときにプロジェクトを選択できません
RockResolve 2014

19

バージョンを指定するのはどうですか?

PM>インストール-パッケージjQuery-バージョン1.9.1

参照:http//nuget.org/packages/jQuery/1.9.1


私が尋ねた関連質問:stackoverflow.com/q/16126338/11912要するに、それは機能しますが、それは不格好です。そして、ブラインドアップデートはそれを壊します。
James Skemp 2013

私は実際、jQueryのバージョン管理snafuの後でコンソールを使い始めました(これをそれと呼びます)。最善の解決策ではありませんが、+ 1です。
James Skemp 2013年

+1。すでに誤って2.xにアップグレードしていて、1.9に戻り、2.xへのアップグレードを防ぎたい場合は、承認された回答から制限を追加する前/後に、このように手動でダウングレードする必要があります。
Pluc 2014年

8

Nugetには1.xブランチのみを追跡するjquery1パッケージが含まれるようになったため、コアjQueryパッケージをこのパッケージに交換できるはずです。


良い発見。ページを読みやすくするには少し作業が必要ですが、複数のバージョンのjQueryを使用できる柔軟性が気に入っています。
James Skemp 2013

それで、質問に対するジョンのコメントに戻りますが、1.xと2.xの両方が含まれ、それぞれの現在のバージョンが含まれているパッケージがあれば便利です。
James Skemp 2013

2
ただし、jQueryに依存する他のライブラリがある場合は、常にそこにあります。せいぜい、jQuery2.0と一緒にこれを使用できます。依存するjQuery1.xのみが必要な場合、これは機能せず、Dave Rの回答を確認する必要があります
RockResolve 2014

4

@TeYoUの2つのソリューションを上から組み合わせました

まず、パッケージマネージャーコンソールからパッケージをインストールしました。

ツールメニュー->ライブラリパッケージマネージャー->パッケージマネージャーコンソール

PM> Install-Package jQuery -Version 1.9.1

次に、@ DaveRが言うようにpackages.configを編集しました。

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

次に、Nuget Managerを使用して現在のバージョン(現在は1.10.2)に更新しましたが、それは魅力のように機能しました。


1
実際、最初に見つけたバージョンを指定する必要はありません。許可バージョンを追加してから更新を実行すると、ダウングレードされます...
Martin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.