gpt4 book ai didi

babeljs - "register"中的 "babel/register"是什么意思

转载 作者:行者123 更新时间:2023-12-02 16:43:12 32 4
gpt4 key购买 nike

为了在 Babel 中进行运行时转换,您需要 require 并使用 babel-core/register。我不知道 register 在这个意义上意味着什么,即实际的定义。

The page isn't very helpful.

这实际上意味着什么?

最佳答案

babel 的目的是将你的 js 当前代码转换为你正在使用的给定环境、工具、框架的可理解的 js 版本。这些有所不同,如下所列, How to use Babel with your tool of choice. 在 Node 环境中,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 中设置 .babelrc 文件来告诉节点有关可用预设的信息。

{
"presets": ["@babel/preset-env"]
}

现在进入寄存器方面。由于 ES6 模块的性质为 explained here ,如果我们想在没有像 webpack 或 rollup 这样的构建步骤的情况下运行 babel,并使用 babel “即时”运行文件,我们需要将 babel 注册到节点的运行时 require 钩子(Hook)会将自身绑定(bind)到节点的 require 并自动编译文件在运行时打开。这相当于 CoffeeScript 的 Coffee-script/register。 reference from babel usage docs for babel-register found here 。因此,除了之前的 npm 安装之外,我们还需要添加 @babel/register:

npm install @babel/register --save-dev

npm i -D @babel/register

现在我们可以使用它了,要么通过两种方式之一在应用程序文件中要求“@babel/register”,要么在一个文件中(通常是在 index.js 文件中,该文件是应用程序中的入口点并包含对其他文件的要求)或在使用 cli 时添加它。

// in .js file
require("@babel/register");

// in command line, don't add it to the .js file but instead use the -r flag for require
npx -r @babel/register index.js

(有关 npx 的更多信息可以是 found here )

作为添加 .babelrc 的选项,可以通过在 package.json 文件中添加“babel”属性作为选项来跳过它,例如。

//package.json in root
...,
"babel": {
"presets":[
"@babel/preset-env"
]
},
...

虽然上面是针对 babel 7 的,但 babel 6 中的示例可以从一位伟大老师的 github 中找到,Josh Miller, here (查看他的package.json文件)希望这有助于理解“注册”需求。

关于babeljs - "register"中的 "babel/register"是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35349936/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com