babel-node에서 babel pulgins를 사용하려면 .babelrc 설정

목적



ES2015로 작성하고 power-assert을 사용하는 소스 코드를 babel-node로 이동합니다.
이를 위해 babel-node에 babel-plugin-espower을 플러그인으로 지정하고 싶습니다.

결론



.babelrc 에 plugins를 설정합니다.

.babelrc
{
  "plugins": [
    "babel-plugin-espower"
  ]
}

배경



테스트 코드는 mocha compilers 옵션으로 espower-babel을 지정하면 움직일 수 있습니다.
mocha --compilers js:espower-babel/guess test"

제품 코드는 babel plugis 옵션을 사용하여 움직이는 소스 코드를 만들 수 있습니다.
babel --plugins babel-plugin-espower test.js

그러나 babel-node에는 plugins 옵션이 없습니다.
babel-node --plugins babel-plugin-espower

움직이지 않습니다.
error: unknown option `--plugins'

가 출력됩니다.

babel-node를 사용할 수 있으면, babel로 매번 트랜스파일 하지 않아도 좋아집니다. 운동으로 움직이는 것이 쉬워집니다.
nodemon과 함께 소스 코드의 변경 모니터링도 가능합니다.

babel-node의 거동 확인



시도에 babel-node의 인수를 늘려
babel-node --plugins babel-plugin-espower hoge.js

실행하면
module.js:338
    throw err;
          ^
Error: Cannot find module '/Users/shigerunakajima/syamo/babel-plugin-espower'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Function.Module.runMain (module.js:501:10)
    at Object.<anonymous> (/usr/local/lib/node_modules/babel/lib/_babel-node.js:144:25)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)

node_modules 부하를 찾을 수 없습니다. 이것은
babel-node babel-plugin-espower

와 같은 거동입니다. 오류 메시지에 따라 plugins 옵션은 무시됩니다.

.babelrc 검증



다음 소스 코드로 확인합니다.

sample.js
import assert from 'power-assert'

let a = false

assert(a, 'a is not true.')

.babelrc 없음


npm install power-assert
babel-node sapmle.js

출력 결과
assert.js:86
  throw new assert.AssertionError({
        ^
AssertionError: a is not true.
    at decoratedAssert (/Users/shigerunakajima/syamo/node_modules/power-assert/node_modules/empower/lib/decorate.js:44:25)
    at powerAssert (/Users/shigerunakajima/syamo/node_modules/power-assert/node_modules/empower/index.js:58:32)
    at Object.<anonymous> (/Users/shigerunakajima/syamo/test.js:5:1)
    at Module._compile (module.js:460:26)
    at normalLoader (/usr/local/lib/node_modules/babel/node_modules/babel-core/lib/api/register/node.js:199:5)
    at Object.require.extensions.(anonymous function) [as .js] (/usr/local/lib/node_modules/babel/node_modules/babel-core/lib/api/register/node.js:216:7)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at Object.<anonymous> (/usr/local/lib/node_modules/babel/lib/_babel-node.js:144:25)

assert로서는 움직이지만, power-assert의 상세 표시는 되지 않습니다.

.babelrc 있음



.babelrc에서 babel-plugin-espower을 지정합니다.
npm install power-assert babel-plugin-espower
babel-node sapmle.js

출력 결과
/Users/shigerunakajima/syamo/node_modules/power-assert/node_modules/empower/lib/decorator.js:66
        throw this.errorToRethrow(e, message, context);
                   ^
AssertionError: a is not true.   # test.js:5

  assert(a, 'a is not true.')
         |
         false

    at decoratedAssert (/Users/shigerunakajima/syamo/node_modules/power-assert/node_modules/empower/lib/decorate.js:42:30)
    at powerAssert (/Users/shigerunakajima/syamo/node_modules/power-assert/node_modules/empower/index.js:58:32)
    at Object.<anonymous> (/Users/shigerunakajima/syamo/test.js:5:1)
    at Module._compile (module.js:460:26)
    at normalLoader (/usr/local/lib/node_modules/babel/node_modules/babel-core/lib/api/register/node.js:199:5)
    at Object.require.extensions.(anonymous function) [as .js] (/usr/local/lib/node_modules/babel/node_modules/babel-core/lib/api/register/node.js:216:7)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at Object.<anonymous> (/usr/local/lib/node_modules/babel/lib/_babel-node.js:144:25)

딱딱한

좋은 웹페이지 즐겨찾기