npm はパッケージを参照する際、それが非推奨のパッケージであれば理由付きで警告を表示してくれます。この理由はパッケージの公開元がnpm deprecated
コマンドで定義したものであり概ね信用できます。警告メッセージの例として次はあります。
npm WARN deprecated left-pad@1.3.0: use String.prototype.padStart()
素の JavaScript に padStart メソッドという文字列の開始からパディングを行うメソッドが追加されたため、文字列の左側にパディングを行う left-pad は非推奨となっています、というメッセージです。実際この理由は正しく、無駄にパッケージを使っていることになります。これを解消する方法を紹介します。
まずは警告を見ます。これはnpm ci
でクリーンインストールした時などに見えます。これのdeprecated [パッケージ名]:
の部分でどのパッケージが非推奨なのかわかります。
npm WARN deprecated left-pad@1.3.0: use String.prototype.padStart()
これで対処すべきパッケージがわかりますが、直接依存パッケージとして package.json に書いていないことがほとんどです。最小限のアップデートないし削除によって対処するためには次のコマンドを使います。
npm ls left-pad
このコマンドはあるパッケージがどの様な経路で依存しているかを表示するコマンドです。例えば次の様になります。
> npm ls left-pad [プロジェクト名@バージョン] [プロジェクトの置いてあるディレクトリ] `-- css-purge@3.1.8 `-- jsdom@11.12.0 `-- left-pad@1.3.0
これの一番上のパッケージが package.json 中に書かれているパッケージです。そのパッケージが現プロジェクト中でどの様な状態なのかで対処法が変わります。
もしプロジェクト中のパッケージで不要なパッケージであれば削除すればよいです。これは例えば次のコマンドでできます。
npm uninstall [パッケージ名] # 例. npm uninstall css-purge
もしプロジェクト内で必要なパッケージであり、バージョンの更新が可能であればとりあえず更新して非推奨パッケージとの依存が切れているか確認します。
npm update [パッケージ名] # 例. npm update css-purge
どちらともダメで非推奨の理由が問題ないものであれば、そのまま放置した方がベターです。もし非推奨の理由が無視できないものであれば代替のパッケージを探す、フォークして無視できない理由を改善してそちらを参照する、スクラッチする、あたりが選択肢になります。