どうも、れいです。
プログラマーに憧れる1人情シスやってます。
今回はnpm installについて学んだことをアウトプットしていきたいと思います。
初心者知識なので、間違っている部分がありましたら教えてください。
- プレイ済ゲーム300以上
- 所持ハード20以上
- PC自作経験とGBASP改造経験
- インディーゲー好き
- デザイン等のクリエイティブなことが好き
よろしくね!
@れい

npm installを学ぼうと思ったきっかけ
2026年3月31日、axiosがサプライチェーン攻撃を受けたことをきっかけに、npm installのやり方について考えてみました。
今までnpm installのことはよくわかっておらず、アプリの作り方を検索したときにnpm installをとりあえず叩け!って感じだったので、その程度の理解しかしていませんでした。
何も考えずにnpm installをやっていたので、twitterで
「今日だけはnpm installをするな!」
という投稿をみて、「え!!!どういうこと!?」と焦りに焦りました。
一歩間違えれば自分も食らっていたサイバー攻撃。
ここはnpm installをちゃんと学ぼうと思い、ここから仕組みや対策について学び始めました。
npm installを安全に行う為のフロー
ここからは自分なりにまとめた、npm installを安全に行う為のやり方です。
safe-installについては、この記事を参考にさせていただきました。
プロジェクト作成
プロジェクト直下で、以下のコマンドを実行します。
npm init -yviteを使う人はこちらのコマンドを入力してください。
npm create vite@<バージョン名>(バージョンの選び方についてはバージョンの調べ方で説明しています)
viteの場合は、Install with npm and start now? にYesで答えてしまうと、そのまま npm install されてしまいます。
ここはNoを選択しましょう。
コマンドを実行すると、package.json というファイルが生成されます。
package.jsonとは?
買い物リストのようなものです。
何かライブラリが欲しいときに、package.json にそのライブラリ等を書くとそれがインストールされます。
(vite を使用した場合には、選択したフレームワーク等が package.json に既に記述済みとなる)
.npmrcを作成
プロジェクト直下に .npmrc を作成します(手動でも可)。
type nul > .npmrc.npmrc に記述する中身は以下の通り。
ignore-scripts=true
min-release-age=7| コマンド | 意味 |
|---|---|
ignore-scripts=true | install時のスクリプト実行を止める |
min-release-age=7 | 7日以内の新しいバージョンを除外 |
以降、すべてのnpmコマンドに自動適用されます。
なお、.npmrc がちゃんと効いてるか確認するには、以下のコマンドで確認します。
npm config listsafe-installを記述
package.json に以下を追記します。
既に .npmrc があるので、それと重複する内容は書かないようにします。
{
"scripts": {
"safe-install": "npm install --package-lock-only && npm audit --audit-level=critical && npm ci"
}
}以下、意味です。
| コマンド | 意味 |
|---|---|
--package-lock-only | npm install時にpackage-lock.jsonを更新する。 |
npm audit | npmパッケージに脆弱性がないかどうかチェックする。 |
npm audit --audit-level=critical | criticalレベルの脆弱性だけを検出。検出したら実行をfailさせる。 |
依存を書く
package.json に以下を追記します。
(viteをインストールした人には既に依存関係が記述されています。追加でインストールしたいものがあれば追記しましょう。)
dependencies と devDependencies の中に、欲しいライブラリを記述しています。
例)
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
"typescript": "^5.4.0"
},^は範囲指定です。
dependencies と devDependencies、どちらにライブラリを書くかについての判断の仕方ですが、
「ビルド・コンパイル後の成果物を動かすときに必要か?」
ということなんだそうです(これに関しては私はまだよくわかっていない)。
▶ 成果物を動かすときに必要だったら、dependencies。
▶ 成果物を動かすときに必要だったら、devDependenciesです。
以下はより具体的な例を挙げた説明です(claudeに聞いてみた)。
dependencies(本番でも動く必要がある)
react/vue→ 画面を描画するのに必要express→ サーバーを動かすのに必要axios→ APIを叩くのに必要
devDependencies(開発中だけ使う)
eslint→ コードのチェックツール(ユーザーには関係ない)prettier→ コード整形ツール(同上)typescript→ コンパイルしたら用済みjest/vitest→ テストツール(本番では動かさない)vite/webpack→ ビルドツール(ビルドしたら用済み)
なぜ分ける必要があるか?
本番サーバーで npm install --omit=dev とすると devDependencies をインストールしないため、本番環境を軽くできるというメリットがあります。
迷ったときはとりあえず dependencies に入れても動きはしますが、整理しておくと管理がしやすくなります。
判断がつかないうちはdependenciesで良さそうです。
また、追加でライブラリを入れたいときは、都度ライブラリを package.json に追記して、npm run safe-installを実行します(今はまだ実行しない)。
バージョンの調べ方
バージョンどうやって調べるの?っていうときは、以下のコマンド。
このコマンドでは最新の安定板のバージョンが表示されます。
npm show <ライブラリ名> versionそれか、以下のサイトを使用します。
https://www.npmjs.com/package/react?activeTab=versions
サイトの見方について
バージョンのタブを開くと、Current TagsとVersion Historyがあります。
Current Tagsにはそれぞれ以下のタグがついたバージョンがあります。
| latest | 安定版の最新版(npm show <ライブラリ名> versionで表示されるやつ) |
| next | 次期バージョンのベータ・RC版 |
| experimental | 実験的な機能を含む不安定版 |
| canary | 最先端の開発版(特に不安定) |
などなど。
Version Historyは今までのバージョンがずらああああっと並んでるだけなので、
基本的にはCurrent Tagsのlatestだけ意識しておけばいいです。
コマンドで、もしくはサイトのlatestで19.2.4と表示されていれば、dependenciesに^19.0.0と入力してsafe-installすることで、
「19.x.xの範囲から7日以内にリリースされたものはインストールしないし、インストールしても即実行しないよ(.npmrcの効果)」
と、することができます。
なお、dependenciesやdevDependenciesは重複してはいけないので、必ず1つに統一すること。
究極的に面倒くさいとき
都度dependenciesやdevDependenciesへ追記するのがほんとのほんとうに面倒くさいときは
npm install <ライブラリ名>とすることで package.json に自動で範囲指定が追加されるし、
以下だとバージョンを直接指定してインストールできます。
npm install <ライブラリ名>@<バージョン>ただしこの方法は safe-install のフローを経ないため、 audit(脆弱性監査) のチェックをスキップしてしまいます。
基本は package.json に手動で追記して safe-install を実行するのが望ましいです。
実行
以下のコマンドで package.json に記述したライブラリ等がまとめてインストールされます。
新たに追加したいライブラリが出てきたら、package.json に追記し、都度safe-installをします。
npm run safe-install動かない場合
動かない場合は下記を実行します。
なぜ動かなくなるのかというと ignore-scripts(.npmrc)で必要な処理も止めてるからです。
npm rebuild <ライブラリ名>インストールすると、node_modules(ここにライブラリ等がまとめられる)というフォルダが生成されますが、このフォルダは重くなることが予想されるため、もし github を使っている場合は .gitignore へ記載しておきます。
他の開発環境からインストールする場合
以降はこれを実行します(他の人が同じ依存環境をインストールしたい場合)。
こうするとlockの中身を見てインストールを行ってくれるので安心です。
※npm installは絶対に使わないこと。
npm ciまとめ
npm init -yでプロジェクト作成- .npmrcを作成
- safe-installを記述
- 依存を書く
- safe-installを実行
ベテランの方からしたら間違えまくっているのかもしれませんが、私の調べる力と理解力ではここまでが限界でした。
もっといい方法があれば教えてください。
以上、「npm installについてやり方を学んでみた」でした!


コメント