「npm init -y」コマンドを打ってpackage.jsonファイルを生成すると次のようになる。
C:\Projects7\sample>npm init -y
Wrote to C:\Projects7\sample\package.json:
{
"name": "sample",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
C:\Projects7\sample>
package.jsonファイルの必須項目はnameとversionである。
「name」は「プロジェクト名(=パッケージ名)」(必須)
「version」は「バージョン」(必須)
この2つだけが必須プロパティである。
2種類のプロジェクト名定義
単純なプロジェクト名(スコープなし)
“name”:”パッケージ名”
スコープ付きプロジェクト名
“name”:”@<ユーザ名>/パッケージ名”
パッケージ名は文字数214文字以内(スコープ文字を含む)
使える文字種(もじしゅ)
アルファベット小文字(a-z)
数字(0-9)
-(ハイフン)
.(ドット)
_(アンダースコア)
~(チルダ)
※URLになって問題にならない文字が使える。アルファベットの大文字が使えない点に注意すること。
.(ドット)と_(アンダースコア)は先頭では使えない文字である点に注意すること。
npmのユーザー名は、小文字のアルファベット、数字、アンダースコア(_)、およびピリオド(.)のみ
を使用できる。ハイフンは使用できない。
バージョン番号には「セマンティックバージョンニング」を利用する。
「license」には「SPDXライセンスID」を指定する。
SPDX License List | Software Package Data Exchange (SPDX)
「SPDXライセンスID」には例えば、MITなどがある。
node.jsは自分の作ったプロジェクトを世界に公開することが可能である。このためプロジェクトにはlicenseプロパティというものが存在している。
ライセンスとは、プロジェクトを配布した際などに利用者にプロジェクトの法的な扱いを指定する。
ここで疑問なのは、企業などで開発を行った配布を許可しないプロジェクトの場合はlicenseプロパティに何を書くか?ネットで検索していたら次のようにUNLICENSEDとするみたい。
※UNLICENSEDにしただけではプロジェクトが公開にならない。privateプロパティをtrueにする必要がある。プロジェクトの公開したことないから、また今度試してみるかな。
–追記2023.06.28(水) ここから–
Node.jsで自作ライブラリを公開は記事に書いた。
【Node.js】自作ライブラリの公開 (attacktube.com)
–追記2023.06.28(水) ここまで–
「description」は「プロジェクトに関する説明」
「main」は「エントリーポイントへのパス」
「author」は「プロジェクトの作者」
エントリーポイント(entry point)はIT用語辞典に「エントリポイントとは、コンピュータプログラムを実行する際に、一番最初に実行することになっている箇所のこと。」と載っていた。
一番最初に実行するコードをエントリーポイントと言うみたいだな。
「scripts」は異なるスクリプト(コマンド)をキーとして定義し、それぞれのスクリプトに対して実行するコマンドを値として設定する。package.jsonファイル内の「scripts」セクションに記述されたスクリプトは、npmコマンドを使用して実行することができる。
例えば、「npm test」というコマンドを実行すると、package.jsonの「scripts」セクションに定義された「test」スクリプトが実行される。このスクリプトには実行するコマンドが指定されており、そのコマンドが実行される。
C:\Projects7\sample>npm test
> sample@1.0.0 test
> echo "Error: no test specified" && exit 1
"Error: no test specified"
C:\Projects7\sample>
参考
Node.js 入門 ー演習しながら学ぶ基本クラスの使い方ー | Udemy ExternalLink
npm/yarnを実行したときに’No license field’が出た時の対処法 – 株式会社シーポイントラボ | 浜松のシステム・RTK-GNSS開発 (cpoint-lab.co.jp) ExternalLink
package.jsonの中身を理解する – Qiita ExternalLink
関連
【Node.js】package.json その2 (attacktube.com)