ビットコイン自動トレードへの道 No.2 (準備編 step01)[改01]
前回のNo.1ではNodeでプログラムを起動する際に毎回 babel-registerを咬ませていた。テスト実行では問題ないだろうが、運用時にはNodeだけで起動できることが望ましい。そこで今回は、BabelでビルドしてES5形式のJavaScriptに変換する方法を取り上げる。追加するモジュールがあるので、前回同様npmでモジュールを追加する。
(注意:前回作った時はindex.jsというファイル名でプログラムを書いたが、その部分をapp.jsに変更してある。以前にindex.jsと書いてる部分は、今回はapp.jsと読み替えて欲しい。
また、新しくsrcというフォルダを作って、その下にapp.jsを格納した。babelの対象をsrcフォルダに固定するために、その方が便利だからだ
[改01])
npm install --save-dev babel-cli
上記のコマンドを実行した後には、package.jsonファイルは以下のようになっているはずだ。
// package.json
{
"name": "step01",
"version": "1.0.0",
"description": "coin trading step01",
"main": "app.js",
"scripts": {
"start": "node -r babel-register src/app.js"
},
"author": "o-matsuo",
"license": "ISC",
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.6.1",
"babel-register": "^6.26.0"
},
"dependencies": {
"ccxt": "^1.12.54"
}
}
babel-cliモジュールが読み込まれた。そこで次のコマンドを実行してみよう。
./node_modules/.bin/babel src -d dist
このコマンドを実行した後、「dist」というフォルダが作成されていることに気づいたと思う。このフォルダの中には「app.js」というファイルが存在している。もともとのプログラムファイル名「app.js」と同じ名称だ。
ファイルを開いてみて欲しい。あなたが記述したプログラムとはまったく異なる文法で記述されているはずだ。これがBabelによる変換結果である。
このプログラムを実行してみよう。
node ./dist/app.js
以前と同じ結果が得られたはずだ。
ただし、毎回ビルドをするために「./node_modules/...」のような長いコマンド名を打ち込むのも面倒なので、npmからビルドを起動できるようにpackage.jsonのScriptsに追記する。追記するコマンドは
「"build": "babel src -d dist --source-maps"」
である。上記を追記したpackage.json は以下である。
また、「node -r babel-register src/app.js」と実行するのも面倒なので、"start"スクリプトも記述してある。前回存在した"test"スクリプト部分は不要なので削除した。
// package.json
{
"name": "step01",
"version": "1.0.0",
"description": "coin trading step01",
"main": "app.js",
"scripts": {
"start": "node -r babel-register src/app.js",
"build": "babel src -d dist --source-maps"
},
"author": "o-matsuo",
"license": "ISC",
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.6.1",
"babel-register": "^6.26.0"
},
"dependencies": {
"ccxt": "^1.12.54"
}
}
ES6/ES7形式のプログラムをビルドせずにそのまま実行する場合は、
npm start
と実行すると「node -r babel-register src/app.js」が実行される。
npm run build
と実行すると distフォルダが作成され、そこにBabelでトランスパイルされたファイルが作成される。今回は紹介しないが、デバッグで必要になるmapファイルも作成するように「--source-maps」指定を追加してあるので、Mapファイルも作成されているはずだ。
ビルドされた後のファイルは動的にトランスパイルする必要が無いので、起動が早くなっている。
次回はVSCでデバッグ実行するためのlaunch.jsonの設定について記述する予定だ。