Closed8

【JavaScript】Node.js とは (npm, package.json)

ShionShion

Node.js とは

JavaScript エンジンが搭載されたソフトウェアで、
Node.js を使用することによって、ブラウザがなくても JavaScript を実行できる

main.js
console.log("hello");
$ node main.js 
hello
ShionShion

Node.js におけるブローバルオブジェクト

Node.js はブラウザで実行しているわけではないので、Web APIs は存在しない。

Node.js のグローバルオブジェクトは下記にまとまっている。

https://nodejs.org/api/globals.html

ShionShion

npm とは

Node.js をインストールすると、自動で npm もインストールされる。
npm とは、Node.js のプログラムを簡単に共有できるソフトウェアのこと。

自分の作ったプログラムを、世界に公開したり、
他人の作ったプログラムを、インストールして使うことができたりする。

下記を実行すると package.json というファイルが作成される。

npm init

package.json というファイルは、プロジェクトに対応する Node.js に関する設定が書かれたファイルのこと。

例えば自分のプログラムを公開したい場合は、下記を実行すればOK。

npm publish

また、他人のプログラムをイン素トールする場合は、下記を実行する。

npm install [package name]

インストールできるパッケージは下記から検索できる。
https://www.npmjs.com/

ちなみに、インストールしたパッケージは、node_modules ディレクトリの中に入る

パッケージを誰かと共有して使いたい場合は、node_modules を共有するのではなく、package.json を共有すればOK。package.json に書かれている内容は、npm install を実行すると全部インストールされるため。

ShionShion

package-lock.json とは

package-lock.json とは、npm install で実際にインストールしたパッケージ情報が記載されている。

package-lock.json を使用してパッケージをインストールする際には以下のコマンドを実行する。

npm ci

上記コマンドを実行する主なユースケースとしては CI 実行時や git clone 後の動作確認など。
そのため、一般的にGit管理に含めるファイルとなる。

詳細は下記の記事がわかりやすい。
https://qiita.com/sugurutakahashi12345/items/1f6bb7a372b8263500e5

ShionShion

package.json の scripts

scripts には、key と value を好きに追加できる。
そして、以下のコマンドを実行すれば、value を実行できる。

npm run [key name]

ちなみに、key が test, start, stop, restart の場合は以下のように run を省略できる。

npm test
ShionShion

npx

npm がインストールされたときに自動で使えるようになるコマンド。

これ結構便利で、npx で指定したパッケージが存在しない場合、一時的に使い捨てで使えるものとしてインストールして、実行までしてくれる

例えば、http server というパッケージがない状態で、下記を実行する。

npx http-server

すると、開発サーバーが起動してくれる⭐️

使ったらすぐに消えるので、環境が汚れないから便利

ShionShion

global にインストールする

-g をつけるとグローバルにインストールする。
グローバルにインストールしたパッケージは、どのパスにいても実行可能になる。

npm install -g [package name]
ShionShion

--save-dev オプション

下記を実行すると、devDependencies のところに入る。

npm install --save-dev [package name]

使い所は、開発中にだけ使うもの--save-dev をつければ良い。

dependencies に入ろうが、devDependencies に入ろうがあまり変わりはないが、変わってくるのは、パッケージを公開するとき。

自分のパッケージを公開して、誰かがそれをインストールして使用するときに、dependencies に書かれているものがインストールされる。

まあ違いはそれくらい。

このスクラップは3日前にクローズされました