package.json
プロジェクトの身分証明書
package.json は、そのプロジェクトが何者で、何を借りているのかを書いたファイルです。次のコマンドで作られます。
プレーンテキスト
npm init -y中身はただの JSON です。特別な文法はありません。
JSON
{
"name": "fleama-api",
"version": "1.0.0",
"main": "app.js",
"dependencies": {
"express": "^4.18.2"
}
}npm install express を打つと、dependencies にこの行が自動で足されます。手で書き足す必要はありません。
node_modules を配らなくてよい理由
前のレッスンで、node_modules は他人に渡さないと書きました。渡すのは package.json のほうです。
受け取った人が npm install を打つと、dependencies を見て同じ部品が揃います。何万ファイルもあるフォルダを送る代わりに、数十行の設計図を送る、という考え方です。
バージョンの前に付いている記号
^4.18.2 の ^ には意味があります。
| 書き方 | 許す範囲 |
|---|---|
4.18.2 | この版だけ |
~4.18.2 | 4.18 系の中の新しいもの |
^4.18.2 | 4 系の中の新しいもの |
^ が既定なのは、多くの部品が「先頭の数字が変わらないうちは壊さない」という約束で公開されているからです。ですから ^ のままで、たいていは安全に新しいものを受け取れます。
手を動かす
演習では、プロジェクト名と依存の一覧から package.json の中身にあたるオブジェクトを組み立てる関数を書きます。fleama の土台がどう定義されるのかを、自分の手で作ってください。
要件
nameは受け取った名前、versionは"1.0.0"、mainは"app.js"にするdependenciesはパッケージ名をキー、"^1.0.0"を値にしたオブジェクトにする- 依存が空の配列のときも
dependenciesは空のオブジェクトとして必ず入れる
入出力例
buildPackageJson("fleama-api", ["express"]) → {"dependencies":{"express":"^1.0.0"},"main":"app.js","name":"fleama-api","version":"1.0.0"}
buildPackageJson("fleama-api", ["express","dotenv"]) → {"dependencies":{"dotenv":"^1.0.0","express":"^1.0.0"},"main":"app.js","name":"fleama-api","version":"1.0.0"}
buildPackageJson("fleama-api", []) → {"dependencies":{},"main":"app.js","name":"fleama-api","version":"1.0.0"}ヒント
編集 ゆめさく編集部