为了在Babel中进行运行时转换,您需要使用babel-core/register
。我不知道register
在这个意义上是什么意思,即实际定义。
这实际意味着什么?
答案 0 :(得分:1)
好的,所以您知道的babel的目的是将js当前代码转换为您正在使用的给定环境,工具和框架的js易于理解的版本。此处列出的内容有所不同, How to use Babel with your tool of choice. 在节点环境中,babel并不作为其核心API的一部分存在,因此需要首先将其作为npm软件包添加(我的示例适用于@babel 7.x)。而且由于babel被分开以容纳不同的工具,因此我们需要添加@ babel / core来实现核心功能,并添加@ babel / preset-env来启用ES2015 +的转换。
npm install @babel/core @babel/preset-env --save-dev
或
npm i -D @babel/core @babel-preset
现在,当我们使用babel时,我们想通过在根目录more on that found here
中设置一个.bablerc文件来告知可用的预设。{
"presets": ["@babel/preset-env"]
}
现在进入寄存器方面。由于ES6模块具有explained here的性质,如果我们要运行babel而不进行webpack或汇总之类的构建步骤,并“即时”运行babel,则需要将babel注册到节点运行时挂钩将自身绑定到节点的需求,并自动动态地编译文件。这等效于CoffeeScript的coffee脚本/注册。 reference from babel usage docs for babel-register found here。因此,与以前的npm安装一起,我们添加了@ babel / register
npm install @babel/register --save-dev
或
npm i -D @babel/register
最后,要么在您使用的应用程序文件中要求它,要么在cli中添加它
//in .js file
require("@babel/register");
或 //在命令行中,不要将其添加到.js文件中,并且-re标志用于require npx -r @ babel /注册MY_FILE.js
(有关npx的更多信息可以为found here )
请注意,.bablerc可以跳过,可以将带有和选项对象的“ babel”属性放置在package.json文件中,例如
//package.json in root
"babel": {
"presets":[
"@babel/preset-env"
]
}
优秀教师的github Josh Miller, here可以找到babel 6中的一个很好的例子 希望这有助于理解“注册”需求。
答案 1 :(得分:0)
简短回答 => Babel 可以在两种情况下帮助我们:
require("@babel/register")();
babel-node index.js
阅读更多:babel-node vs babel-register
babel src --out-dir lib