質問: ### 前提・実現したいこと node.jsのアプリケーションフレームワーク「Express」のインストール時に表示される WARNを解決したいです。よろしくお願いします。 ターミナルで*npm init*を実行し、package.jsonファイルが出来ている事を確認後 *npm install express --save*を実行してExpressをインストールしました。 package.jsonファイルにdependenciesとexpressの項目は追加されたのですが、ターミナルにnoticeやWARNが表示されます。 ### 発生している問題・エラーメッセージ ``` npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN sample-thai@1.0.0 No description npm WARN sample-thai@1.0.0 No repository field. + express@4.17.1 added 50 packages from 37 contributors and audited 50 packages in 1.647s found 0 vulnerabilities ``` ### 補足情報(FW/ツールのバージョンなど) <構築環境> ・PC:Macbook Pro ・OS:macOS Catalina 10.15.7 ・node.js:v12.18.4 ・npm:6.14.6 ・php:PHP 7.3.11
回答: > > package.jsonファイルにdependenciesとexpressの項目は追加されたのですが、ターミナルにnoticeやWARNが表示されます。 > > > Node.jsのNoticeとWARNは書いておいたから読んでおいてねという趣旨のメッセージです。 ちゃんと読みましょう。 私はWARNを気が向いたら眺める程度ですが、 例えばWindowsだったらあの依存モジュールが必要だなぁとか、 MacOSだったらこっちの依存モジュール使うかなぁとかそういうことが書かれているようです。 そんなのOSが変われば不都合が出るのは当然なので、 気にしてもしょうがない事がわかります。 それを上手く回避して良い感じに使えるようにしてくれているわけですから。 > > npm notice created a lockfile as package-lock.json. You should commit this file. > > 和訳: package-lock.jsonとしてロックファイルを作成しました。 このファイルをコミットする必要があります。 > > > なーんだ、package-lock.json作ったよというお知らせですよ。 最初のインストールでは登場して当然のファイルです。 元々package.jsonファイルだけでは 依存モジュール全ての厳密なバージョン管理が完璧に出来るわけではありません。 インストールした環境によって少しずつバージョンのズレが発生し、 それによりA環境とB環境を作った時に、A環境のみ動作しなくなるレアケースが発生していました。 なのでFacebook社がnpmを置き換える目的で、 yarnというパッケージ管理ソフトを開発しました。 yarnはnpmと同じくpackage.jsonを使って依存モジュールを管理出来ますが、 そこから更にlockファイルを作って、完全な依存モジュールのバージョン管理を実現しました。 npmもバージョン5でyarnに追従する形で 「package-lock.json」を作り管理するようになりました。 しかし、package-lock.jsonファイルは人が書いて管理したくないような複雑さです。 あくまで機械が読んでよしなにやってくれる類のファイルです。 誰が作るねんというと、npmが作るわけですね。 裏でこっそり作ると分からないので、わざわざnoticeとして記載してくれてるだけの話です。