npm パッケージのアップデート
- javascript
yarn outdated
yarn outdated
は npm レジストリを調べます。インストールされた npm パッケージが古いかどうかを確認し、その結果を出力します。
$ yarn outdated
yarn outdated v1.22.10
info Color legend :
"<red>" : Major Update backward-incompatible updates
"<yellow>" : Minor Update backward-compatible features
"<green>" : Patch Update backward-compatible bug fixes
Package Current Wanted Latest Package Type URL
@fortawesome/fontawesome-svg-core 1.2.28 1.2.32 1.2.32 dependencies https://fontawesome.com
@fortawesome/free-brands-svg-icons 5.13.0 5.15.1 5.15.1 dependencies https://fontawesome.com
@fortawesome/free-solid-svg-icons 5.13.0 5.15.1 5.15.1 dependencies https://fontawesome.com
@fortawesome/react-fontawesome 0.1.10 0.1.11 0.1.11 dependencies https://github.com/FortAwesome/react-fontawesome
gatsby 2.22.15 2.24.67 2.24.67 dependencies https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby#readme
gatsby-image 2.4.5 2.4.20 2.4.20 dependencies https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-image#readme
gatsby-plugin-manifest 2.4.9 2.4.33 2.4.33 dependencies https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-manifest#readme
gatsby-plugin-offline 3.2.7 3.2.30 3.2.30 dependencies https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-offline#readme
gatsby-plugin-react-helmet 3.3.2 3.3.12 3.3.12 dependencies https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-react-helmet#readme
gatsby-plugin-sharp 2.6.9 2.6.38 2.6.38 dependencies https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-sharp#readme
gatsby-remark-prismjs 3.5.6 3.5.15 3.5.15 dependencies https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-remark-prismjs#readme
gatsby-source-filesystem 2.3.8 2.3.32 2.3.32 dependencies https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-source-filesystem#readme
gatsby-transformer-remark 2.8.19 2.8.37 2.8.37 dependencies https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-transformer-remark#readme
gatsby-transformer-sharp 2.5.3 2.5.16 2.5.16 dependencies https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-transformer-sharp#readme
prettier 2.0.5 2.0.5 2.1.2 devDependencies https://prettier.io
prismjs 1.20.0 1.21.0 1.21.0 dependencies https://github.com/PrismJS/prism#readme
react-helmet 6.0.0 6.1.0 6.1.0 dependencies https://github.com/nfl/react-helmet#readme
出力では npm パッケージ1つに対し、「Current」「Wanted」「Latest」の3つのバージョン番号が提示されます。それぞれの意味は次の通りです。
- Current: 現在インストールされているバージョン番号
- Wanted:
package.json
で指定した semver の範囲を満たす最大のバージョン番号 - Latest: 最新のバージョン番号
package.json で指定した semver の範囲
package.json
で指定した semver の範囲とはなんでしょうか。
まず、semver とは Semantic Versioning の略です。Semantic Versioning とはバージョン番号管理の手法のことを指します。Semantic Versioning ではバージョン番号を次のように管理します。
バージョンナンバーは、メジャー.マイナー.パッチ とし、バージョンを上げるには、
- APIの変更に互換性のない場合はメジャーバージョンを、
- 後方互換性があり機能性を追加した場合はマイナーバージョンを、
- 後方互換性を伴うバグ修正をした場合はパッチバージョンを上げます。
プレリリースやビルドナンバーなどのラベルに関しては、メジャー.マイナー.パッチ の形式を拡張する形で利用することができます。
次に、yarn outdated を実行した際の package.json
の内容を確認します。
{
// ...
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.28",
"@fortawesome/free-brands-svg-icons": "^5.13.0",
"@fortawesome/free-solid-svg-icons": "^5.13.0",
"@fortawesome/react-fontawesome": "^0.1.10",
"gatsby": "^2.22.15",
"gatsby-image": "^2.4.5",
"gatsby-plugin-manifest": "^2.4.9",
"gatsby-plugin-offline": "^3.2.7",
"gatsby-plugin-react-helmet": "^3.3.2",
"gatsby-plugin-sharp": "^2.6.9",
"gatsby-remark-prismjs": "^3.5.6",
"gatsby-source-filesystem": "^2.3.8",
"gatsby-transformer-remark": "^2.8.19",
"gatsby-transformer-sharp": "^2.5.3",
"prismjs": "^1.20.0",
"prop-types": "^15.7.2",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-helmet": "^6.0.0"
},
"devDependencies": {
"prettier": "2.0.5"
},
// ...
}
例えば gatsby
のバージョン番号は 2.25.15
となっています。Semantic Versioning に従うと、メジャーバージョンが 2
、マイナーバージョンが 25
、パッチバージョンが 15
となります。
ところで、2.25.15
の前に ^
(キャレット)が付いていました。これは 1.0.0
以上のバージョン番号について、マイナーバージョンのアップデートないしはパッチバージョンのアップデートが可能なことを意味します。
yarn outdated
の出力では gatsby
の Current が 2.22.15
であるのに対し Wanted が 2.24.67
となっています。2.22.15
から 2.24.67
へのアップデートはマイナーバージョンのアップデートのため、アップデート可能なことがわかります。アップデート可能なバージョンが存在する場合、yarn upgrade を実行することでアップデートが行われます。
なお、~2.22.15
のように ~
(チルダ)が付いている場合は、パッチバージョンのアップデートのみが可能なことを意味します。
以上を踏まえると、package.json
で指定した semver の範囲とは、package.json
での npm パッケージのバージョン番号の表記に応じたアップデート可能な範囲のことを指します。^2.25.15
であればマイナーバージョンのアップデートの範囲( 2.25.15
以上 3.0.0
未満)を指します。一方 ~2.25.15
であればパッチバージョンのアップデートの範囲( 2.25.15
以上 2.26.0
未満)を指します。
yarn upgrade
yarn upgrade
は特定の npm パッケージを Wanted のバージョン番号にアップデートします。npm パッケージ名を省略した場合、すべての npm パッケージが一括アップデートされます。
以下の例では @fortawesome/fontawesome-svg-core
という npm パッケージのアップデートを行います。
$ yarn upgrade @fortawesome/fontawesome-svg-core
package.json
での @fortawesome/fontawesome-svg-core
のバージョン番号の表記は ^1.2.28
です。また、yarn outdated
の出力では Wanted は 1.2.32
となっています。そのため、yarn upgrade
を実行すると @fortawesome/fontawesome-svg-core
は 1.2.32
にアップデートされます。
このとき package.json
は更新されませんが、 yarn.lock
の差分を確認するとバージョン番号が変わっていることがわかります。
diff --git a/yarn.lock b/yarn.lock
index 7eec881..f4ca88d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1112,17 +1112,17 @@
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46"
integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==
-"@fortawesome/fontawesome-common-types@^0.2.28":
- version "0.2.28"
- resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.28.tgz#1091bdfe63b3f139441e9cba27aa022bff97d8b2"
- integrity sha512-gtis2/5yLdfI6n0ia0jH7NJs5i/Z/8M/ZbQL6jXQhCthEOe5Cr5NcQPhgTvFxNOtURE03/ZqUcEskdn2M+QaBg==
+"@fortawesome/fontawesome-common-types@^0.2.28", "@fortawesome/fontawesome-common-types@^0.2.32":
+ version "0.2.32"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.32.tgz#3436795d5684f22742989bfa08f46f50f516f259"
+ integrity sha512-ux2EDjKMpcdHBVLi/eWZynnPxs0BtFVXJkgHIxXRl+9ZFaHPvYamAfCzeeQFqHRjuJtX90wVnMRaMQAAlctz3w==
"@fortawesome/fontawesome-svg-core@^1.2.28":
- version "1.2.28"
- resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.28.tgz#e5b8c8814ef375f01f5d7c132d3c3a2f83a3abf9"
- integrity sha512-4LeaNHWvrneoU0i8b5RTOJHKx7E+y7jYejplR7uSVB34+mp3Veg7cbKk7NBCLiI4TyoWS1wh9ZdoyLJR8wSAdg==
+ version "1.2.32"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.32.tgz#da092bfc7266aa274be8604de610d7115f9ba6cf"
+ integrity sha512-XjqyeLCsR/c/usUpdWcOdVtWFVjPbDFBTQkn2fQRrWhhUoxriQohO2RWDxLyUM8XpD+Zzg5xwJ8gqTYGDLeGaQ==
dependencies:
- "@fortawesome/fontawesome-common-types" "^0.2.28"
+ "@fortawesome/fontawesome-common-types" "^0.2.32"
"@fortawesome/free-brands-svg-icons@^5.13.0":
version "5.13.0"
yarn add [package-name]@latest
yarn add [package-name]@latest
は npm パッケージを最新のバージョンにアップデートします。メジャーバージョンのアップデートを含むため、アップデート後は不具合が発生していないかを確認する必要があります。
また、 @latest
ではなく @バージョン番号
とすることでバージョン番号を指定してアップデートすることも可能です。
yarn upgrade-interactive [--latest]
yarn upgrade-interactive
は npm パッケージの一括アップデートを対話式で行います。yarn outdated
と yarn upgrade
を合わせたイメージで、npm パッケージの3つのバージョン(「Current」「Wanted」「Latest」)を確認しながら、アップデートする npm パッケージを選択することができます。yarn upgrade-interactive --latest
とすると最新のバージョンへの一括アップデートを対話式で行います。
$ yarn upgrade-interactive
yarn upgrade-interactive v1.22.10
info Color legend :
"<red>" : Major Update backward-incompatible updates
"<yellow>" : Minor Update backward-compatible features
"<green>" : Patch Update backward-compatible bug fixes
? Choose which packages to update. (Press <space> to select, <a> to toggle all, <i> to invert selection)
dependencies
name range from to url
❯◯ @fortawesome/fontawesome-svg-core ^1.2.28 1.2.28 ❯ 1.2.34 https://fontawesome.com
◯ @fortawesome/free-brands-svg-icons ^5.13.0 5.13.0 ❯ 5.15.2 https://fontawesome.com
◯ @fortawesome/free-solid-svg-icons ^5.13.0 5.13.0 ❯ 5.15.2 https://fontawesome.com
◯ @fortawesome/react-fontawesome ^0.1.10 0.1.10 ❯ 0.1.14 https://github.com/FortAwesome/react-fontawesome
◯ gatsby ^2.22.15 2.22.15 ❯ 2.31.1 https://github.com/gatsbyjs/gatsby/tree/master/packages/gats
by#readme
◯ gatsby-image ^2.4.5 2.4.5 ❯ 2.10.0 https://github.com/gatsbyjs/gatsby/tree/master/packages/gats
by-image#readme
◯ gatsby-plugin-manifest ^2.4.9 2.4.9 ❯ 2.11.0 https://github.com/gatsbyjs/gatsby/tree/master/packages/gats
by-plugin-manifest#readme
◯ gatsby-plugin-offline ^3.2.7 3.2.7 ❯ 3.9.0 https://github.com/gatsbyjs/gatsby/tree/master/packages/gats
by-plugin-offline#readme
◯ gatsby-plugin-react-helmet ^3.3.2 3.3.2 ❯ 3.9.0 https://github.com/gatsbyjs/gatsby/tree/master/packages/gats
by-plugin-react-helmet#readme
◯ gatsby-plugin-sharp ^2.6.9 2.6.9 ❯ 2.13.1 https://github.com/gatsbyjs/gatsby/tree/master/packages/gats
by-plugin-sharp#readme
◯ gatsby-remark-images ^3.3.39 3.3.39 ❯ 3.10.0 https://github.com/gatsbyjs/gatsby/tree/master/packages/gats
by-remark-images#readme
◯ gatsby-remark-katex ^3.3.14 3.3.14 ❯ 3.9.0 https://github.com/gatsbyjs/gatsby/tree/master/packages/gats
by-remark-katex#readme
◯ gatsby-remark-prismjs ^3.5.6 3.5.6 ❯ 3.12.0 https://github.com/gatsbyjs/gatsby/tree/master/packages/gats
by-remark-prismjs#readme
◯ gatsby-source-filesystem ^2.3.8 2.3.8 ❯ 2.10.0 https://github.com/gatsbyjs/gatsby/tree/master/packages/gats
by-source-filesystem#readme
◯ gatsby-transformer-remark ^2.8.19 2.8.19 ❯ 2.15.0 https://github.com/gatsbyjs/gatsby/tree/master/packages/gats
by-transformer-remark#readme
◯ gatsby-transformer-sharp ^2.5.3 2.5.3 ❯ 2.11.0 https://github.com/gatsbyjs/gatsby/tree/master/packages/gats
by-transformer-sharp#readme
◯ prismjs ^1.20.0 1.20.0 ❯ 1.23.0 https://github.com/PrismJS/prism#readme
◯ react ^16.12.0 16.13.1 ❯ 16.14.0 https://reactjs.org/
◯ react-dom ^16.12.0 16.13.1 ❯ 16.14.0 https://reactjs.org/
◯ react-helmet ^6.0.0 6.0.0 ❯ 6.1.0 https://github.com/nfl/react-helmet#readme
(Move up and down to reveal more choices)