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
パッケージについて、公開しようとしても公開されない設定とする。
誤っての公開を防ぐ。