问题标签 [babel-preset-env]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
38 浏览

browser - browserslist:自某个日期以来发布的特定浏览器的版本

我们的政策是支持去年稳定的 Firefox、Chrome 和 Edge 桌面版本。

示例:今天是 2022-01-12,所以我们支持 Chrome 从 2022-01-11 开始的版本以及当时稳定的版本:78(2020-11-17),88(2021-01-19), 89 (2021-03-02), ..., 97 (2022-01-04)

我的第一次尝试是:Chrome since 2021-03导致此错误:Unknown browser query 'Chrome since 2021-03'. Maybe you are using old Browserslist or made typo in query.

按照我试过的语法:Firefox and since 2021-03但收到:Specify versions in Browserslist query for browser Firefox

因为没有像all Firefox versions我想出的那样:last 99 Chrome versions and since 2021-01-12

虽然这可行,但我觉得必须有更好的选择。

0 投票
0 回答
21 浏览

node.js - 如何使用 babel 的 env 预设来定位启用 ES6 模块的 Node?

使用此配置:

...Babel 将import/export语法转换为 CommonJS ( require)。

我如何更改它以使 Babel 保留importexport语法,以便我可以将结果输出作为 ES 模块运行(例如,node使用.mjs扩展名运行它)?

我已经尝试添加"esmodules": truetargets,但是与"node": "16".

0 投票
0 回答
16 浏览

babeljs - 在 .browserslistrc 中使用默认值和 @babel/preset-env

我正在查看Babel 的 @babel/preset-env 文档,并注意到以下注释:

请注意,如果您依赖 browserslist 的默认查询(显式或没有 browserslist 配置),您将需要查看 No targets 部分以获取有关 preset-env 行为的信息。

这是引用的No targets 部分的摘录。

当没有指定目标时:Babel 会假设你的目标是最旧的浏览器。例如,@babel/preset-env 会将所有 ES2015-ES2020 代码转换为 ES5 兼容。

因此,Babel 的行为与 browserslist 不同:当在 Babel 或 browserslist 配置中没有找到目标时,它不使用默认查询。如果要使用默认查询,则需要将其作为目标显式传递:

让我感到困惑的那一行: “当您的 Babel 或browserslist 配置中没有找到目标时,它不使用默认查询”。如果 中有一个默认查询,那.browserslistlrc不意味着 browserslist 配置中有一个目标吗?文件的全部意义不.browserslistrc在于有一个集中的位置来引用您的目标浏览器吗?维护两个独立的位置似乎容易出错。

我决定调查并打开debugBabel 的标志。此时我的.babelrc文件没有列出明确的目标,而我.browserslistrc只是列出了defaults. 运行 Babel 时,我在终端中得到以下输出:

当我添加一个明确"targets": "defaults"的 to.babelrc时,输出发生了变化,现在列出了目标浏览器:

defaults为了增加我的困惑,此列表与运行时 browserslist 报告的不匹配npx browserslist defaults

任何人都可以澄清这里发生了什么,并推荐一个最佳实践,如果你使用defaultsbrowserslist 查询@babel/preset-env