資料
・バージョン
https://github.com/nodejs/Release#release-schedule
・本家資料
http://exploringjs.com/es6/ch_modules.html#sec_design-goals-es6-modules
変更点
・babel等のトランスパイラを利用しなくてもnodeだけでES6 moduleの記述ができるように。
(他略)
必要な作業
サマリ
・バージョンを8.xへ
・module.exports
等はexport default
を使う
・ファイルの拡張子を.js
から.mjs
にする
・UnitTest等でtestモジュールを利用している場合は.mjs
を対象に
・node起動時に--experimental-modules
オプションを付与して起動
詳細
▼ バージョンを8.xへ
今回は8.11.xに
"engines": {
"node": "v8.11.*"
},
▼ module.exports
等はexport default
を使う
・修正 前
class A {
# クラス内容
}
module.exports = A; # ここを
・修正 後
class A {
// クラス内容
}
export default A; // こう
▼ファイルの拡張子を.js
から.mjs
にする
下記のように変更するだけ
hoge.js
→ hoge.mjs
▼UnitTest等でtestモジュールを利用している場合は.mjs
を対象に
UnitTest等でtestモジュールを利用している場合は、拡張子が.mjs
になることで、対象ファイルから外れてしまう
よって、拡張子を追加する必要がある
例)jest
"jest": {
"verbose": true,
"moduleFileExtensions": [
"js",
"json",
"jsx",
"node",
"mjs" // ここ
],
"testMatch": [
"**/__tests__/**/*.?(m)js?(x)", // ここ
"**/?(*.)(spec|test).?(m)js?(x)" // ここ
],
"collectCoverageFrom": [
"**/routes/**/*.{js,jsx,mjs}", // ここ
],
"transform": {
"^.+\\.(js|mjs)$": "babel-jest" // ここも
}
},
・jestの設定
https://doc.ebichu.cc/jest/docs/ja/configuration.html
▼node起動時に--experimental-modules
オプションを付与して起動
node --experimental-modules app
おわり
何かあれば適宜コメント下さい。勉強になります故