| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 --- |  | 
| 2 title: "Command: Upgrade" |  | 
| 3 --- |  | 
| 4 |  | 
| 5     $ pub upgrade [PACKAGE] |  | 
| 6 |  | 
| 7 Without any additional arguments, `pub upgrade` gets the latest versions of |  | 
| 8 all the dependencies listed in the [`pubspec.yaml`](pubspec.html) file in the |  | 
| 9 current working directory, as well as their [transitive |  | 
| 10 dependencies](glossary.html#transitive-dependencies), to the `packages` |  | 
| 11 directory located next to the pubspec. For example: |  | 
| 12 |  | 
| 13     $ pub upgrade |  | 
| 14     Dependencies upgraded! |  | 
| 15 |  | 
| 16 When `pub upgrade` upgrades dependency versions, it writes a |  | 
| 17 [lockfile](glossary.html#lockfile) to ensure that future [`pub |  | 
| 18 get`s](pub-get.html) will use the same versions of those dependencies. |  | 
| 19 Application packages should check in the lockfile to source control; this |  | 
| 20 ensures the application will use the exact same versions of all dependencies for |  | 
| 21 all developers and when deployed to production. Library packages should not |  | 
| 22 check in the lockfile, though, since they're expected to work with a range of |  | 
| 23 dependency versions. |  | 
| 24 |  | 
| 25 If a lockfile already exists, `pub upgrade` will ignore it and generate a new |  | 
| 26 one from scratch using the latest versions of all dependencies. This is the |  | 
| 27 primary difference between `pub upgrade` and `pub get`, which always tries to |  | 
| 28 get the dependency versions specified in the existing lockfile. |  | 
| 29 |  | 
| 30 ## Upgrading specific dependencies |  | 
| 31 |  | 
| 32 It's possible to tell `pub upgrade` to upgrade specific dependencies to the |  | 
| 33 latest version while leaving the rest of the dependencies alone as much as |  | 
| 34 possible. For example: |  | 
| 35 |  | 
| 36     $ pub upgrade unittest args |  | 
| 37     Dependencies upgraded! |  | 
| 38 |  | 
| 39 Upgrading a dependency upgrades its transitive dependencies to their latest |  | 
| 40 versions as well. Usually, no other dependencies are updated; they stay at the |  | 
| 41 versions that are locked in the lockfile. However, if the requested upgrades |  | 
| 42 cause incompatibilities with these locked versions, they will be selectively |  | 
| 43 unlocked until a compatible set of versions is found. |  | 
| 44 |  | 
| 45 ## Getting a new dependency |  | 
| 46 |  | 
| 47 If a dependency is added to the pubspec before `pub upgrade` is run, it will |  | 
| 48 get the new dependency and any of its transitive dependencies and place them in |  | 
| 49 the `packages` directory. This is the same behavior as `pub get`. |  | 
| 50 |  | 
| 51 ## Removing a dependency |  | 
| 52 |  | 
| 53 If a dependency is removed from the pubspec before `pub upgrade` is run, it |  | 
| 54 will remove the dependency from the `packages` directory, thus making it |  | 
| 55 unavailable for importing. Any transitive dependencies of the removed dependency |  | 
| 56 will also be removed, as long as no remaining immediate dependencies also depend |  | 
| 57 on them. This is the same behavior as `pub get`. |  | 
| 58 |  | 
| 59 ## Upgrading while offline |  | 
| 60 |  | 
| 61 If you don't have network access, you can still run `pub upgrade`. Since pub |  | 
| 62 downloads packages to a central cache shared by all packages on your system, it |  | 
| 63 can often find previously-downloaded packages there without needing to hit the |  | 
| 64 network. |  | 
| 65 |  | 
| 66 However, by default, pub will always try to go online when you upgrade if you |  | 
| 67 have any hosted dependencies so that it can see if newer versions of them are |  | 
| 68 available. If you don't want it to do that, pass the `--offline` flag when |  | 
| 69 running pub. In this mode, it will only look in your local package cache and |  | 
| 70 try to find a set of versions that work with your package from what's already |  | 
| 71 available. |  | 
| 72 |  | 
| 73 Keep in mind that pub *will* generate a lockfile after it does this. If the |  | 
| 74 only version of some dependency in your cache happens to be old, this will lock |  | 
| 75 your app to that version. The next time you are online, you will likely want to |  | 
| 76 run `pub upgrade` again to upgrade to a later version. |  | 
| OLD | NEW | 
|---|