0
0

[Javascript入門した]package.jsonの要素について

Last updated at Posted at 2024-09-29

このページについて

普段はデータエンジニアとして、python, SQLを主に使用しているが、業務でフロントやバックエンドを作ることになりそうなため、これまで手付かずだったJSを学習する.

あくまで自習の備忘録として書く.
人に見てもらうことを想定していない為、体系的な解説でもなく、中身も端折っているので悪しからず.

※但し数ヶ月後の自分はもはや他人なので、その時の自分が読んでもわかるように書く.

package.jsonとは

Node.jsやjavascriptプロジェクトの設定ファイルのこと.
依存関係やスクリプトなどを管理するために使われる.
これがあることで、プロジェクトの構成を把握でき、他の開発者もプロジェクトのセットアップが簡単にできる.

構成要素

package.json
{
  "name": "node_js",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "ts-node": "^10.9.2",
    "typescript": "^5.6.2"
  },
  "devDependencies": {
    "@types/node": "^22.7.4"
  }
}
  • name
    プロジェクトの名前.
  • version
    プロジェクトのバージョン.
  • description
    プロジェクトの簡単な説明を書く.
  • main
    エントリーポイントのファイル名を記載する.プロジェクトを実行する時の最初のファイル.
  • scripts
    よく使うコマンドやタスクを定義する.
    ここで定義したコマンドは、npm run <スクリプト名>で実行できる。
  • dependencies
    プロジェクトが動作するために必要なパッケージを記載.npm installでインストールされる依存関係.
  • devDependencies
    開発環境でしか使わないパッケージを記載する.例えば、テストやビルドツールなど.
  • repository
    ソースコードが管理されているリポジトリなどを記載する.
  • keywords
    プロジェクトに関連するキーワードを書いておく.パッケージを公開した時に検索しやすくするために使われる.
  • author
    プロジェクトの作者や連絡先を記載する.
  • license
    プロジェクトのライセンスを記載する.OSSの場合、ここにライセンスを記載する.
  • engines
    使用するNode.jsのバージョンなどを指定する.

package-lock.json

package.jsonの補完的な働きをするファイル.
特定のタイミングで自動作成される.

  • npm installした時
  • 依存関係が更新された時
    • 新しいパッケージを追加する時
    • 既存のパッケージを更新する時
    • パッケージを削除する時
  • package.jsonが更新された時
    • 直接package.jsonを更新して、npm installした時にその変更がpackage-lock.jsonに反映される.

これには、package.jsonよりも詳細にパッケージの依存関係が記録されている.
package.jsonはパッケージのバージョン範囲を指定するため、マイナーバージョンやパッチバージョンがインストールされることも多い.
対して、package-lock.jsonはインストールされる正確なバージョンが記録されるため、依存関係を固定化することができる.

つまり、package.jsonに加えて、package-lock.jsonを併せて共有することで、他の開発者が完全に同じ依存関係の環境を簡単に構築することができる.

0
0
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
0
0