npmのセキュリティーアップデートが必要な依存パッケージを更新する

3 min read読了の目安(約2000字

Dependabotがセキュリティーアップデートを毎度促してくれるのですが、いまいち分からず放置していたんですが、根気よく調べていくと対応方法がわかったので残しておきます

npmパッケージを更新

まずはnpm updateでパッケージを更新。接頭辞に^がついたものはメジャーバージョンは固定され、マイナーアップデートになります。

脆弱性のある依存パッケージを更新

npm updateした時に脆弱性のあるパッケージがあるのでnpm audit fixしてください的なメッセージが表示されるので言われた通りに実行。

でもそれだけでは大体終わりませんよね

以下の手順は、ずっとセキュリティーアラートが鳴っているのをなんとかしたい場合にお試しください。package.jsonに依存パッケージをinstallして対処するので、package.jsonが肥大化する可能性があります。

node-forgeをなんとかする

package-lock.jsonの中身を見て一つ一つ対応していきます。まずはnode-forgeを見ていきます。grepをかけるとselfsignedというパッケージがnode-forgeを読み込んでいます。

    "selfsigned": {
      "version": "1.10.7",
      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz",
      "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==",
      "dev": true,
      "requires": {
        "node-forge": "0.9.0"
      }
    },

なのでselfsignedのパッケージを更新します。package-lock.jsonの中身は直接更新してはいけないので、package.jsonにselfsignedのパッケージを追加します

npm install -D selfsigned

それに合わせてnode-forgeも更新されます

    "selfsigned": {
      "version": "1.10.8",
      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz",
      "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==",
      "dev": true,
      "requires": {
        "node-forge": "^0.10.0"
      }
    },

websocket-extensionsをなんとかする

次にpackage-lock.jsonをwebsocket-extensionsでgrepかけます。

    "websocket-driver": {
      "version": "0.6.5",
      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
      "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=",
      "dev": true,
      "requires": {
        "websocket-extensions": ">=0.1.1"
      }
    },

依存しているのはwebsocket-driverですが、0.1.1以上であればOKなのでwebsocket-extensionsを更新します。

npm install -D websocket-extensions

最後は動作確認しましょう

おわり

npm audit fixで全部直る世界になって欲しい
Dependabotが健気にPRだしてくれるけどマージすると動かなくなるのなんで?