Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

【初学者向け】package.jsonについて調べてみた

$
0
0

業務でnpmライブラリのアップデートを行うにあたって、package.jsonについてちゃんと調べてみたので忘備録としてまとめました。

まずnpmとは

意味としては大きく2種類あると思います。
①npm.Inc社のサービス
https://www.npmjs.com/
npm.Incという会社が提供している上記のサービスことをnpmといいます。今年3月にGithubに買収された会社ですね。このサービス内に、Javascriptで書かれたライブラリが豊富に存在しています。ここに存在するライブラリを、次に説明するnpmコマンドを使って操作している訳です。

②パッケージを操作するためのCLI
Node.jsのライブラリを管理するためのコマンドで、ライブラリを生成したり、npm上のライブラリをローカルにインストールしたりするツールです。

ライブラリとは

ライブラリを使えば、自分で一からコードを書かなくても簡単に機能を実現することができます。

外部ライブラリは自分のプロジェクトに含めるのではなく、「このプロジェクトはnpmのこのライブラリを使っている」という情報だけを「宣言」します。これを宣言しているのがpackage.jsonです。

例えばRailsでは、昔はvendorというディレクトリの配下にに外部パッケージをコピペして使用していましたが、それだとバージョンを管理するのが面倒になるため、package.jsonで宣言する方法が主流になってきているそうです。

ライブラリをインストールする

npmでライブラリをインストールすると、それらはルートディレクトリ直下のnode_modulesディレクトリに仮置場としてダウンロードされます。package.jsonがあるディレクトリで以下のコマンドを実行すると生成されるのが確認できると思います。

npm install

このファイルは基本的に.gitignoreで除外されるため、編集する機会はほぼ無いと思います。

package-lock.jsonとは

package.jsonに記載された、それぞれライブラリの依存先が宣言されています。
インストールされるべき厳密なバージョン番号、モジュールの場所、必要とされるライブラリのリストなどが書かれており、かなり膨大な行になりがちです。

ライブラリをインストールする際は、package-lock.jsonに書き込まれたバージョンのパッケージがインストールされます。

わかりやすい例があったので紹介します。

- package.jsonは買うものリスト
100円のりんごを買いたいと書かれている

- package-lock.jsonは実際に買ってきた領収書
実際には120円のりんごを買いましたと書かれている

devDependencesとdevendencesについて

devDependences

開発に必要なライブラリのみを記述します。
開発者がこのpackage.jsonがあるディレクトリでnpm installを行うと、dependenciesに書かれているライブラリのみではなく、devDependenciesに書かれているライブラリもインストールされます。

dependences

ライブラリを使いたい人がnpm installしたときにはdependenciesに書かれているライブラリのみがインストールされます。

バージョン表記について

バージョン表記は以下のようになっています。左から順に、メジャーバージョン、マイナーバージョン、パッチバージョンと呼びます。

0.1.2
名前内容
メジャー仕様そのものの変更。upgradeする場合はアプリケーションの改修が必要になる可能性あり。
マイナー仕様を維持した状態での機能追加。upgradeしてもアプリケーションは壊れない。
パッチバグ修正。upgradeしてもアプリケーションは壊れない。

まとめ

  • npmはオンライン上のライブラリレジストリと、ライブラリを操作するためのCLIの2つを指す。
  • package.jsonとはライブラリをアプリで使用するときに、その依存関係を管理するファイル package-lock.jsonで使用するバージョンを固定できる。
  • バージョンは3種類あり、左から順にメジャー、マイナー、パッチという。

今回はじめてpackage.jsonのライブラリのバージョンアップをした新米なので、もし間違っている箇所等あればコメントよろしくお願いします!


Viewing all articles
Browse latest Browse all 8691

Trending Articles