开发中的 babel-node 与 babel-register

babel-node vs babel-register in development

当运行我的代码正在开发时,使用 babel-register 或 babel-node 有什么区别吗?两个选项是:

  1. require('babel-register')({ "presets": ["es2015"] }); at entry-point.js 和 npm start script node entry-point.js

  2. 只需 npm 启动脚本 babel-node entry-point.js --preset=es2015

他们做的事情完全一样吗?是否推荐一种方式优于另一种方式?

我在工作中四处询问并得到了答案。我将 post 放在这里以防其他人感兴趣。

babel-node 基本上在内部调用 babel-register。参见 source。差异是

  1. 当使用 babel-node 时,entry-point 本身也会 运行 通过 babel 而 babel-register 只有在 babel-register 之后需要的文件是required 将是 运行 通过 babel.

  2. 如果你需要 babel-polyfill(例如发电机)babel-node 会自动拉入,而 babel-register 你需要自己做.这是为生产而构建时要记住的事情。如果您需要 babel-polyfill 并且在开发中使用 babel-node,则需要确保在构建生产时使用 babel-polyfill 进行构建。

似乎不​​推荐一种方式优于另一种方式。然而,babel-node 更干净一些 b/c 它会将 require ('babel-register') 排除在代码库之外。对于所有这些东西的新手来说,它似乎也更直观一些。