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
npm config list
npm run <command>
npm ls
例えばどういうパッケージがあるの?
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の欠点を解消すべく作られた。GoogleやFacebookのひとたちも参加してるらしい。
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
以上