npm-check-updates(ncu)でワイルドカードを使ったパッケージ指定をいろいろ試してみた

最近、npm-check-updates(ncu)でパッケージの指定にワイルドカードが使える事を知ったので、いろいろ試してみました。

以下、簡単に試した内容をまとめてみました。

目次

使用したパッケージ

確認用に使用したは主に以下の2つのパッケージです。

"lodash": "^4.17.2"
"@types/lodash": "^4.14.1"

@types/lodashはスコープがある場合の違いの確認用です。

以下、試してみたコマンドに、結果と簡単なメモを添えて紹介していきます。

スコープなしの場合

ncu lo*

結果は以下の通り

lodash  ^4.17.2  →  ^4.17.21

2文字だと問題なく候補が表示されました。

1文字については挙動がおかしかったので、後述。

@types/lodashは表示されず。

パッケージ指定部分に/がないと、スコープありのパッケージは対象とならない模様。

ncu lodash*

結果は以下の通り

lodash  ^4.17.2  →  ^4.17.21

*に当たる部分が0文字でも対象となるようです。

ncu l*d*

結果は以下の通り

lodash  ^4.17.2  →  ^4.17.21

ワイルドカードの複数使用も可

スコープありの場合

ncu @*/*

結果は以下の通り

@types/lodash                       ^4.14.1  →  ^4.14.170

スコープ部分、パッケージ名の部分の両方にワイルドカード使用可

ncu @t*/*

スコープ部分の一部文字列を指定

結果は以下の通り

@types/lodash                       ^4.14.1  →  ^4.14.170

ncu @types/*

スコープ部分の文字列を全て指定

結果は以下の通り

@types/lodash                       ^4.14.1  →  ^4.14.170

ncu @t*/l*

スコープ部分とパッケージ名部分の一部文字列を指定

結果は以下の通り

@types/lodash                       ^4.14.1  →  ^4.14.170

ncu @*/lodash

パッケージ名部分の文字列を全て指定

結果は以下の通り

@types/lodash                       ^4.14.1  →  ^4.14.170

(?)挙動

ncu *

試したpackage.jsonに含まれていた他のパッケージは更新候補として表示されたのですが、lodashはひっかかりませんでした。

また、複数更新候補があったのですが、更新対象として表示されたのは先頭の1つだけでした。

対象の中から、先頭の1つだけが表示されているような気がします。

ncu l*

結果は以下の通り

No dependencies.

試したpackage.jsonに含まれていた他のパッケージで、同様に最初の1文字指定で試したところ、候補対象が表示されていました。

(もしかするとちょっと不安定なのかも?)

ncu */*

以下のようなメッセージが表示されました。

Argument list too long

ncuのファイルパスや行番号などが表示されていたので、内部的に問題の出る指定なのかもしれません。

ncu */lodash

先頭の@なしでスコープ付きのパッケージを指定

結果は以下の通り

No dependencies.

試したpackage.jsonに含まれていた@types/lodash以外のスコープ付きパッケージも表示されませんでした。

スコープ付きのパッケージを指定する場合は@/が必須なのかもしれません。

まとめ

以下、簡単に試してみたことをまとめ

lodashが更新対象となったコマンド

  • ncu lo*
  • ncu lodash*
  • ncu l*d*

@types/lodashが更新対象となったコマンド

  • ncu @*/*
  • ncu @t*/*
  • ncu @types/*
  • ncu @t*/l*
  • ncu @*/lodash

lodash、@types/lodash共に対象とならなかったコマンド

  • ncu *
  • ncu l*
  • ncu */*
  • ncu */lodash