@babel/preset-env 字段中的 "modules:auto" 是什么意思?

what does the "modules:auto" means in @babel/preset-env field?

babel 文档说模块默认选项是 auto,auto 是什么意思?它是否将 "import" 转换为 "require"? "modules: false" 和 "modules: auto" 有什么区别?看起来它们是相同的结果;我正在学习 tree shaking,当我没有为我的@[=20= 设置任何选项时,tree shaking 成功,当我设置 "modules: false" 时,tree shaking 也成功;

  "presets": [
    [
      "@babel/preset-react"
    ],
    [
      "@babel/preset-env",{"modules": "false"}
    ]
  ],

它可以将 ES6 模块语法转换为另一种模块类型。

参考:https://babeljs.io/docs/en/babel-preset-env#modules

auto 的文档似乎在 this 拉取请求中有所描述。根据该公关:

The default auto will automatically select false if ES6 module syntax is already supported by the caller, or "commonjs" otherwise.

因此,如果支持 ES6(这似乎是您的情况),将模块设置为 auto 与设置 false 相同。

auto表示default valuemodules的默认值为false。参见 - https://github.com/babel/babel/pull/8485/files#r236086742.

`Invalid Option: The 'modules' option must be one of \n` +
  ` - 'false' to indicate no module processing\n` +
  ` - a specific module type: 'commonjs', 'amd', 'umd', 'systemjs'` +
  ` - 'auto' (default) which will automatically select 'false' if the current\n` +
  `   process is known to support ES module syntax, or "commonjs" otherwise\n`,