LoginSignup
6
6

More than 3 years have passed since last update.

【npm】パッケージの脆弱性対処(備忘録)

Posted at

nuxtでアプリをビルドしたときにパッケージの脆弱性に関する警告文が出た
npmの依存関係を修復したい
警告文を1㍈も理解せずnpm install で胡麻化してきた」人にとって、一歩踏み出す補助輪になればとも思いメモを残します
根本的な理解については別途お調べください

目次

package.json と package-lock.json

node_modules(パッケージの大群)はgitへpushするものではない
なので、再現するためにパッケージを記しておくファイル(package.json)が必要
package.json で指定している内容を元に npm install では各種パッケージがインストールされる
が、実際にインストールされるものは package.json への書き方やタイミングでインストールされるものが変わる
そのため、実際にインストールされたものが package-lock.json へ記録される(package-lock.jsonが存在しない場合は生成される)
これにより、他の開発環境で npm install する際は package-lock.json が参照され
固定されたバージョンで各パッケージがインストールがされるため、node_modulesが再現できる

脆弱性の確認

脆弱性のチェック
npm audit

npmaudit1.png
audit は監査という意味
パッケージの依存関係に脆弱性がある箇所を教えてくれるコマンド
※ただし、npm v6以上

脆弱性の自動修正

脆弱な箇所の自動修正
npm audit fix
npm audit fix --force

npmaudit2.png
ある程度は自動修正してくれる
high,criticalを潰しておけばとりあえずはOK
自動修正してくれない部分はログを見て手動で直した

脆弱性の手動修正

パッケージの在り処を参照
npm ls "パッケージ名"

パッケージ名を指定して、どこにそのパッケージがあるか探すことができる
不必要なパッケージを削除して、インストールしなおす

packageのインストール
npm install "パッケージ名"
npm install "パッケージ名@バージョン" バージョン指定する場合

参考記事

Qiita記事

脆弱性の警告を受けたnpmパッケージの依存関係を力技で直す
あなたがnpm installをしてはいけない時
npmパッケージのvulnerability対応フロー
【Node.js】package.jsonとpackage-lock.jsonについて簡単にまとめる
package-lock.jsonについて知りたくても聞けなかったこと

外部記事

"npm install"と "npm ci"の違いは何ですか?
package.jsonとpackage-lock.jsonの運用方法について

以上

間違った理解や記述があればご指摘いただけると幸いです

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6