【JavaScript】Node.js とは (npm, package.json)
Node.js とは
JavaScript エンジンが搭載されたソフトウェアで、
Node.js を使用することによって、ブラウザがなくても JavaScript を実行できる。
console.log("hello");
$ node main.js
hello
Node.js におけるブローバルオブジェクト
Node.js はブラウザで実行しているわけではないので、Web APIs は存在しない。
Node.js のグローバルオブジェクトは下記にまとまっている。
npm とは
Node.js をインストールすると、自動で npm もインストールされる。
npm とは、Node.js のプログラムを簡単に共有できるソフトウェアのこと。
自分の作ったプログラムを、世界に公開したり、
他人の作ったプログラムを、インストールして使うことができたりする。
下記を実行すると package.json というファイルが作成される。
npm init
package.json というファイルは、プロジェクトに対応する Node.js に関する設定が書かれたファイルのこと。
例えば自分のプログラムを公開したい場合は、下記を実行すればOK。
npm publish
また、他人のプログラムをイン素トールする場合は、下記を実行する。
npm install [package name]
インストールできるパッケージは下記から検索できる。
ちなみに、インストールしたパッケージは、node_modules
ディレクトリの中に入る。
パッケージを誰かと共有して使いたい場合は、node_modules を共有するのではなく、package.json を共有すればOK。package.json に書かれている内容は、npm install
を実行すると全部インストールされるため。
package-lock.json とは
package-lock.json とは、npm install
で実際にインストールしたパッケージ情報が記載されている。
package-lock.json を使用してパッケージをインストールする際には以下のコマンドを実行する。
npm ci
上記コマンドを実行する主なユースケースとしては CI 実行時や git clone 後の動作確認など。
そのため、一般的にGit管理に含めるファイルとなる。
詳細は下記の記事がわかりやすい。
package.json の scripts
scripts には、key と value を好きに追加できる。
そして、以下のコマンドを実行すれば、value を実行できる。
npm run [key name]
ちなみに、key が test, start, stop, restart の場合は以下のように run を省略できる。
npm test
npx
npm がインストールされたときに自動で使えるようになるコマンド。
これ結構便利で、npx で指定したパッケージが存在しない場合、一時的に使い捨てで使えるものとしてインストールして、実行までしてくれる。
例えば、http server というパッケージがない状態で、下記を実行する。
npx http-server
すると、開発サーバーが起動してくれる⭐️
使ったらすぐに消えるので、環境が汚れないから便利。
global にインストールする
-g
をつけるとグローバルにインストールする。
グローバルにインストールしたパッケージは、どのパスにいても実行可能になる。
npm install -g [package name]
--save-dev オプション
下記を実行すると、devDependencies
のところに入る。
npm install --save-dev [package name]
使い所は、開発中にだけ使うものに --save-dev
をつければ良い。
dependencies に入ろうが、devDependencies に入ろうがあまり変わりはないが、変わってくるのは、パッケージを公開するとき。
自分のパッケージを公開して、誰かがそれをインストールして使用するときに、dependencies に書かれているものがインストールされる。
まあ違いはそれくらい。