clojure で Electoron できる descjop をやってみようと思った

やってみたことをクズ記事でもいいので書いておくことにしたような気配。
書かないと忘れちゃうからね。

lein でプロジェクトを作る

descjop を使うらしい。
lein new の使い方はこんな感じ:

% lein new <テンプレート名> <プロジェクト・ディレクトリパス>

descjop というテンプレートを使うらしい。
とりあえず、hello-descjop というプロジェクト名にする:

% lein new descjop hello-descjop

grunt くらいあんよのインストール

npm で grunt-cli をグローバルでインストールする。
これは grunt 更新していなかった気がするのでやっただけで、既に更新済みだよっ!ってひとはやんなくても大丈夫。

% sudo npm install -g grunt-cli

更新してなかったみたいなのでこんな感じのログ?が表示されたよ:

/usr/bin/grunt -> /usr/lib/node_modules/grunt-cli/bin/grunt
/usr/lib
`-- grunt-cli@1.2.0 
  +-- findup-sync@0.3.0 
  | `-- glob@5.0.15 
  |   +-- inflight@1.0.4 
  |   | `-- wrappy@1.0.1 
  |   +-- inherits@2.0.1 
  |   +-- minimatch@3.0.0 
  |   | `-- brace-expansion@1.1.3 
  |   |   +-- balanced-match@0.3.0 
  |   |   `-- concat-map@0.0.1 
  |   +-- once@1.3.3 
  |   `-- path-is-absolute@1.0.0 
  +-- grunt-known-options@1.1.0 
  +-- nopt@3.0.6 
  | `-- abbrev@1.0.7 
  `-- resolve@1.1.7 

ローカルな npm モジュールのインストール

npm はローカルにもモジュール?パッケージ?をインストールできるし、グローバルにもインストールできるのであれがそれ。
Electoron は npm 側のモジュールなので、これが大事:

% npm install

こんな感じのログが出た:

npm WARN deprecated lodash@0.9.2: Grunt needs your help! See https://github.com/gruntjs/grunt/issues/1403.
npm WARN deprecated graceful-fs@1.2.3: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
npm WARN deprecated wrench@1.5.4: wrench.js is deprecated! You should check out fs-extra (https://github.com/jprichardson/node-fs-extra) for any operations you were using wrench for. Thanks for all the usage over the years.
hello-descjop@0.0.0 /home/rihine/workspace/hello-descjop
+-- closurecompiler-externs@1.0.4 
+-- grunt@0.4.5 
| +-- async@0.1.22 
| +-- coffee-script@1.3.3 
| +-- colors@0.6.2 
| +-- dateformat@1.0.2-1.2.3 
| +-- eventemitter2@0.4.14 
| +-- exit@0.1.2 
| +-- findup-sync@0.1.3 
| | +-- glob@3.2.11 
| | | +-- inherits@2.0.1 
| | | `-- minimatch@0.3.0 
| | `-- lodash@2.4.2 
| +-- getobject@0.1.0 
| +-- glob@3.1.21 
| | +-- graceful-fs@1.2.3 
| | `-- inherits@1.0.2 
| +-- grunt-legacy-log@0.1.3 
| | +-- grunt-legacy-log-utils@0.1.1 
| | | +-- lodash@2.4.2 
| | | `-- underscore.string@2.3.3 
| | +-- lodash@2.4.2 
| | `-- underscore.string@2.3.3 
| +-- grunt-legacy-util@0.2.0 
| +-- hooker@0.2.3 
| +-- iconv-lite@0.2.11 
| +-- js-yaml@2.0.5 
| | +-- argparse@0.1.16 
| | | +-- underscore@1.7.0 
| | | `-- underscore.string@2.4.0 
| | `-- esprima@1.0.4 
| +-- lodash@0.9.2 
| +-- minimatch@0.2.14 
| | +-- lru-cache@2.7.3 
| | `-- sigmund@1.0.1 
| +-- nopt@1.0.10 
| | `-- abbrev@1.0.7 
| +-- rimraf@2.2.8 
| +-- underscore.string@2.2.1 
| `-- which@1.0.9 
`-- grunt-download-electron@2.1.3 
  +-- decompress-zip@0.0.4 
  | +-- binary@0.3.0 
  | | +-- buffers@0.1.1 
  | | `-- chainsaw@0.1.0 
  | |   `-- traverse@0.3.9 
  | +-- mkpath@0.1.0 
  | +-- nopt@2.1.2 
  | +-- q@0.9.7 
  | +-- readable-stream@1.1.13 
  | | +-- core-util-is@1.0.2 
  | | +-- isarray@0.0.1 
  | | `-- string_decoder@0.10.31 
  | `-- touch@0.0.2 
  +-- github-releases@0.2.1 
  | +-- minimatch@0.2.12 
  | +-- optimist@0.4.0 
  | | `-- wordwrap@0.0.3 
  | +-- prettyjson@0.8.1 
  | | `-- colors@0.6.0-1 
  | `-- request@2.27.0 
  |   +-- aws-sign@0.3.0 
  |   +-- cookie-jar@0.3.0 
  |   +-- forever-agent@0.5.2 
  |   +-- form-data@0.1.4 
  |   | +-- async@0.9.2 
  |   | `-- combined-stream@0.0.7 
  |   |   `-- delayed-stream@0.0.5 
  |   +-- hawk@1.0.0 
  |   | +-- boom@0.4.2 
  |   | +-- cryptiles@0.2.2 
  |   | +-- hoek@0.9.1 
  |   | `-- sntp@0.2.4 
  |   +-- http-signature@0.10.1 
  |   | +-- asn1@0.1.11 
  |   | +-- assert-plus@0.1.5 
  |   | `-- ctype@0.5.3 
  |   +-- json-stringify-safe@5.0.1 
  |   +-- mime@1.2.11 
  |   +-- node-uuid@1.4.7 
  |   +-- oauth-sign@0.3.0 
  |   +-- qs@0.6.6 
  |   `-- tunnel-agent@0.3.0 
  +-- progress@1.1.2 
  `-- wrench@1.5.4 

npm WARN hello-descjop@0.0.0 No repository field.
npm WARN hello-descjop@0.0.0 No license field.

electoron のインストール

「grunt-download-electoron」というモジュールがインストールされているらしいので、探してみたら、インストールされていた。
これが文字通り Electoron をインストールするためのモジュールらしい。

こーいう感じに打って、Electron をインストールするよ:

% grunt download-electron

こんな感じのログが表示された:

Running "download-electron" task
downloading [===================] 100% 0.0s

こんな感じのディレクトリができる:

% tree ./electron/
./electron/
├── LICENSE
├── LICENSES.chromium.html
├── content_shell.pak
├── electron
├── icudtl.dat
├── libgcrypt.so.11
├── libnode.so
├── locales
│   ├── am.pak
│   ├── ar.pak
│   ├── bg.pak
│   ├── bn.pak
│   ├── ca.pak
│   ├── cs.pak
│   ├── da.pak
│   ├── de.pak
│   ├── el.pak
│   ├── en-GB.pak
│   ├── en-US.pak
│   ├── es-419.pak
│   ├── es.pak
│   ├── et.pak
│   ├── fa.pak
│   ├── fi.pak
│   ├── fil.pak
│   ├── fr.pak
│   ├── gu.pak
│   ├── he.pak
│   ├── hi.pak
│   ├── hr.pak
│   ├── hu.pak
│   ├── id.pak
│   ├── it.pak
│   ├── ja.pak
│   ├── kn.pak
│   ├── ko.pak
│   ├── lt.pak
│   ├── lv.pak
│   ├── ml.pak
│   ├── mr.pak
│   ├── ms.pak
│   ├── nb.pak
│   ├── nl.pak
│   ├── pl.pak
│   ├── pt-BR.pak
│   ├── pt-PT.pak
│   ├── ro.pak
│   ├── ru.pak
│   ├── sk.pak
│   ├── sl.pak
│   ├── sr.pak
│   ├── sv.pak
│   ├── sw.pak
│   ├── ta.pak
│   ├── te.pak
│   ├── th.pak
│   ├── tr.pak
│   ├── uk.pak
│   ├── vi.pak
│   ├── zh-CN.pak
│   └── zh-TW.pak
├── natives_blob.bin
├── resources
│   ├── atom.asar
│   └── default_app
│       ├── default_app.js
│       ├── index.html
│       ├── main.js
│       └── package.json
├── snapshot_blob.bin
└── version

Electoron の準備かんりょー。

descjop プロジェクトをビルドして見るテスト

なんか lein externs の出力を externs.js にリダイレクトする。
おまじないらしい。

% lein externs > ./app/js/externs.js

次に cljsbuild する:

% lein cljsbuild once

あぷいの起動

コンパイルが終わったらしいので Electoron あぷいを起動してみる。
Linux の場合は ./electron/electoron を使うのかな?

% ./electron/electron ./app/

出た。

f:id:noqisofon:20160406221817p:plain

参考