たろログ2

実験的運用により、記事品質が乱高下することがあります。予めご了承ください。

2022-05-22 package.json について学ぶ

webpack について学ぶ過程で、 package.json についても少し理解を深めることにした。

npm の package.json についてのページ を読んだので、その内容についてメモをする。

なお、全部をここに書き写すほどではなかったので、めぼしいものだけピックアップして記載する。

name

name パラメタは公開した際パッケージ名となるものである。重複してはならない。

@scope/name という形で、スコープ を設定することができる。スコープというのは composer における "vendor name", "project name" と同じような概念で、パッケージをグループ化することができる。

また、スコープには npm のユーザ名、organization 名が利用される。例えば自分であれば @tarohida

特段理由がなければ、 スコープ付きで名前は定義したほうが良さそうかなと思う。

files

パッケージとしてインストールされる場合に、実際にインストールされるファイルのエントリを記載する。

.gitignore によく似たフォーマットで指定する (ただし記載したものは許可される)

エントリを定義しなかった場合は、 package.json が設置されたディレクトリ以下にあるすべてのファイルがインストール対象となる。

しかし、 .git/ ディレクトリなど、明示的に指定されなくてもパッケージに含まれないファイルが複数規定されている。

main

よくわからなかった。デフォルトは index.js

foo パッケージを require('foo') したときに、指定したモジュールの exports オブジェクトが返される。

bin

binary ファイルを示す。 npm exec, npm run-script で使用可能。

scripts

pre, post 等のライフサイクルイベントのタイミングで実行させるスクリプトを定義する。

RPM Spec files の Scriptlets のようなもの。

dependencies

依存パッケージを記載。

devDependencies

テスト用、ビルド用、ドキュメント用の依存を定義。

依存にはこの他、 peerDependencies, bundledDependencies, optionalDependencies というのがあった。よくわからず。

engines

動作する Engine (Node など) と、そのバージョンを記載。

os

Linux などの OS を指定可能

cpu

CPU アーキテクチャの指定が可能

private

パッケージについて、公開しようとしても公開されない設定とする。

誤っての公開を防ぐ。