Node.js, npm, electron

Node.js, npm, Electronについて、言葉だけ知っていたが内容や関連がわからなかったので調べてみた。

端的に言うと以下のとおりだと認識した。

JSのサーバーサイド実行環境がNode.js。 Node.jsのパッケージマネージャーがnpm。 有名パッケージのひとつがelectron。 electronを使うと、マルチプラットフォームのデスクトップアプリがかんたんに作れる。

以下、もう少し詳しく書く。

Node.jsってなに?

JavaScriptの実行環境。サーバーサイドでJSが動かせるようになる。

$ node
> console.log('hello world!');
hello world!
undefined
> ⏎

npmってなに?

Node Package Manager。 公開されているJSパッケージをかんたんに取り込める。 パッケージの配布もできる。(自分の場合はインストールの利用が主だろう。) さまざまなパッケージが登録されている。"the world’s largest software registry."とのこと。

npmのコマンドはどんなのがあるの?

このあたりが気になった。

npm -l # display full usage info
npm config list
npm run <command> # Run arbitrary package scripts
npm ls # List installed packages

例えばどういうパッケージがあるの?

electron(デスクトップアプリ作成), Grunt(JSタスクランナー), Webpack(モジュールバンドラー)

electronについてもう少しくわしく

JSでマルチプラットフォームのデスクトップアプリが作れるようになるパッケージ。 メインプロセスでうウィンドウを制御する。 各ページはレンダラープロセスが担う。

メインプロセスってなに?

プログラムのエントリーポイント。main.jsとかindex.jsという名前であることが多い。 例えば、requireされるときにこのファイルの返り値が返される。詳細は下記の通り。 docs.npmjs.com

試しに、インストールしたモジュールの中を覗いてみた。

github.com

上記のelectron-quick-startでnpm installしてから、 適当にelectron-downloadモジュールの中を見てみる。 electron-quick-start/node_modules/electron/package.json では "main": "build/index.js", と記載されていた。 そして、 electron-quick-start/node_modules/electron-download/build/index.js はたしかに存在していた。

npmに対抗馬はいないの?

yarnがある。npmの欠点を解消すべく作られた。GoogleFacebookのひとたちも参加してるらしい。 www.webprofessional.jp

余談。yarnは、デフォルトでバージョンのロックファイルを生成する、というのをウリのひとつにしている。 npmでは自動で生成されないということを示唆していると思うのだが、electron-quick-startをnpm installしたら、package.json.lockが生成された。 どういうことだろう…npmも自動生成するようになったのか?node, npmのバージョンは下記の通り。

$ npm --version
5.5.1
$ node --version
v9.2.0

以上