Node.js・npmのバージョン最新化(on MacOS)

2022/11/28に公開

今回は、以前nodebrewでインストールしたNode.jsとnpmについて
バージョンを最新化する手順を説明しています。

Vue CLIインストール時に、npmが古く脆弱性の警告出力

Vue.jsの環境を構築するために、久々にnpm install @vue/cliしたところ、インストールしたパッケージに脆弱性(vulnerabilities)があると警告が出ました。
警告メッセージを確認するとnpmのバージョンが古いため@vue/cliも古いモジュールしかインストール出来なかったようです。

そこで、インストール後にしばらく放置していたNode.jsとnpmのバージョンを最新化します。

npm installの実行結果
% npm install @vue/cli 
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated apollo-server-plugin-base@3.7.1: The `apollo-server-plugin-base` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated apollo-server-errors@3.3.1: The `apollo-server-errors` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated apollo-server-env@4.2.1: The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated apollo-datasource@3.3.2: The `apollo-datasource` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated apollo-reporting-protobuf@3.3.3: The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated apollo-server-types@3.7.1: The `apollo-server-types` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated apollo-server-core@3.11.1: The `apollo-server-core` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated apollo-server-express@3.11.1: The `apollo-server-express` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated subscriptions-transport-ws@0.11.0: The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws    For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md

added 849 packages, and audited 850 packages in 38s

64 packages are looking for funding
  run `npm fund` for details

5 vulnerabilities (2 moderate, 3 high)

Some issues need review, and may require choosing
a different dependency.

Run `npm audit` for details.
npm notice 
npm notice New major version of npm available! 8.11.0 -> 9.1.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.1.2
npm notice Run npm install -g npm@9.1.2 to update!
npm notice 

前提条件

分類 環境
PC MacBook Air(M1, 2020)
OS macOS Monterey(バージョン12.3.1)
nodebrew ver 1.2.0
Node.js v18.3.0(更新前) ※nodebrewでインストール
npm v8.11.0(更新前)

nodebrew, Node.js, npmのバージョン確認は以下の通り。

バージョン確認結果
% nodebrew -v
nodebrew 1.2.0

% node -v
v18.3.0

% npm -v
8.11.0

nodebrewによるNode.jsの最新化

nodebrewを使用してNode.jsを最新化します。
(homebrewでNode.jsをインストールしている場合はアンインストールして、同様の手順でインストールできるかと思います。)

手順の大まかな流れは以下の通りです。

  • Node.jsのインストール可能な最新バージョンの確認
  • バージョンを指定して、Node.jsのインストール
  • インストールしたバージョンのNode.jsの有効化

実行手順

実際のコマンドは以下の通りです。

実行手順
# 現在インストールされているバージョンの確認
nodebrew list

# インストール可能なバージョンの確認
nodebrew ls-remote

# バージョンを指定してのNode.jsのインストール
# (バージョンは上記の結果より指定)
nodebrew install-binary v19.1.0

# インストールされているバージョンの確認
nodebrew list

# インストールしたバージョンを有効(current)にする
nodebrew use v19.1.0

# インストール後のバージョン確認
nodebrew list
node -v
npm -v

実行結果例

以下は実際にコマンドを実行した結果となります。

実行結果例
% nodebrew list  
v18.3.0

current: v18.3.0

% node -v
v18.3.0

% nodebrew install-binary v19.1.0
Fetching: https://nodejs.org/dist/v19.1.0/node-v19.1.0-darwin-arm64.tar.gz
########################################################################################################## 100.0%
Installed successfully

% nodebrew list
v18.3.0
v19.1.0

current: v18.3.0

% nodebrew use v19.1.0 
use v19.1.0

% nodebrew list
v18.3.0
v19.1.0

current: v19.1.0

% node -v
v19.1.0

% npm -v
8.19.3

Node.jsについては想定通り最新のバージョンにアップグレードされました。

npmについては、npm install @vue/cliの警告では、npmの最新バージョンは9.1.2となっていましたが、それより古いバージョン8.19.3となっています。

npm install @vue/cliの警告の引用
npm notice New major version of npm available! 8.11.0 -> 9.1.2

npmの最新化

Node.jsを最新化しただけでは、npmは最新化されていないようなので、npmを最新化します。

手順の大きな流れは以下となります。

  • 最新バージョンの確認
  • バージョンを指定してインストール

実行手順

実行するコマンドは以下の通りです。

実行手順
# 最新バージョンの確認
npm info {パッケージ名} version

# 有効なバージョンの一覧
npm info {パッケージ名} versions

# バージョン指定してのインストール
npm install -g {パッケージ名}@{バージョン番号}

{パッケージ}は今回npmですので、実際に実行したコマンドは以下の通りです。

実行コマンド
npm info npm version
npm info npm versions
npm install -g npm@9.1.2
npm -v

実行結果例

以下は実際にコマンドを実行した結果となります。

実行結果例
% npm info npm version
9.1.2


% npm info npm versions
[
  '1.1.25',        '1.1.70',          '1.1.71',        '1.2.19',
  '1.2.20',        '1.2.21',          '1.2.22',        '1.2.23',
  '1.2.24',        '1.2.25',          '1.2.27',        '1.2.28',

...(省略)

  '8.19.1',        '8.19.2',          '8.19.3',        '9.0.0-pre.0',
  '9.0.0-pre.1',   '9.0.0-pre.2',     '9.0.0-pre.3',   '9.0.0-pre.4',
  '9.0.0-pre.5',   '9.0.0-pre.6',     '9.0.0',         '9.0.1',
  '9.1.0',         '9.1.1',           '9.1.2'
]


% npm install -g npm@9.1.2

removed 14 packages, changed 73 packages, and audited 223 packages in 1s

14 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities


% npm -v
9.1.2

想定通りのバージョン9.1.2にアップグレードされました。

Vue CLIインストール

再度Vue CLIをインストールしたところ、警告は出るものの、脆弱性やnpmのバージョンが古い警告は出力されなくなりました。

% npm install @vue/cli
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated apollo-datasource@3.3.2: The `apollo-datasource` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated apollo-server-plugin-base@3.7.1: The `apollo-server-plugin-base` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated apollo-server-errors@3.3.1: The `apollo-server-errors` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated apollo-server-types@3.7.1: The `apollo-server-types` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated apollo-server-express@3.11.1: The `apollo-server-express` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated apollo-server-env@4.2.1: The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated apollo-reporting-protobuf@3.3.3: The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.
npm WARN deprecated subscriptions-transport-ws@0.11.0: The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws    For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md
npm WARN deprecated apollo-server-core@3.11.1: The `apollo-server-core` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.

added 849 packages in 37s

64 packages are looking for funding
  run `npm fund` for details

今回の記事は以上となります。

Discussion