Help us understand the problem. What is going on with this article?

nexeでNode.jsのアプリをパッケージングしてみた

Node.jsのパッケージングというとpkgとかElectronで無理やりとかしか知らなかったのですが、
nexeというものを新しく知ったので使ってみました。

nexeだと1ファイルにまとまるので他の人に使ってもらうとかの場合に導入しやすいと思います。

使う前の準備

npm -g i nexe

単純なアプリの場合

ソース

index.js
console.log('hello world', process.version);

パッケージングする

nexe index.js

ここで必要に応じて prebuilt node.js のダウンロードが行われる。Proxy環境の場合、環境変数 HTTPS_PROXY=http://proxyuser:proxypass@proxyserver:port のように指定してやれば通り抜けられる。

実行結果

hello world v8.10.0

v8.11.2にしたら以下のエラーが出てしまっていました。まだ対応していないとかかな?

Error: windows-x64-8.11.2 not available, create it using the --build flag

分かったこと、気づいたこと

  1. Node.jsのバージョンはデフォルトは、node -vで取得できるものを使用する(パッケージング時にバージョン指定もできる)
  2. exeの名前のデフォルトは親ディレクトリ名?(少なくともpackage.jsonからではなかった)

外部モジュールをrequireする場合

ソース

index.js
const _ = require('underscore');

console.log('hello world', process.version);
console.log(_.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]));

パッケージングする

nexe index.js

実行結果

hello world v8.10.0
[ [ 'moe', 30, true ],
  [ 'larry', 40, false ],
  [ 'curly', 50, false ] ]

node_modulesディレクトリを消してから実行してみる

hello world v8.10.0
[ [ 'moe', 30, true ],
  [ 'larry', 40, false ],
  [ 'curly', 50, false ] ]

依存パッケージはexeの中に埋め込まれているみたいですね

分かったこと、気づいたこと

  1. requireの行をコメントアウトしてパッケージングしてみると、ちょうどunderscore.js本体の容量(57KB)だけexeファイルが軽くなっていたので特に圧縮とかはしていない様子(underscore-min.jsなら18KB)

まとめ

Node.jsがそのまま入るようで、ファイルサイズは大きくなりがちですが、1ファイルの実行可能ファイルができるのは便利そうです。

参考
プラットフォームの指定などもできるようですね
http://d.hatena.ne.jp/Kazuhira/20180212/1518447476

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした