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

las*_*ger 5 javascript webpack babeljs babel-preset-env

babel 文档说模块默认选项是自动,自动是什么意思?它是否将“导入”转换为“需要”?“模块:假”和“模块:自动”之间有什么区别?似乎它们是相同的结果;我正在学习摇树,当我没有为我的@babel/preset-env 设置任何选项时,摇树成功,当我设置“modules: false”时,摇树也成功了;

  "presets": [
    [
      "@babel/preset-react"
    ],
    [
      "@babel/preset-env",{"modules": "false"}
    ]
  ],
Run Code Online (Sandbox Code Playgroud)

mga*_*cia 8

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

默认情况auto下将自动选择false调用者是否已支持 ES6 模块语法,否则"commonjs"

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


ran*_*oul 3

auto的平均值default value和默认modules值为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`,
Run Code Online (Sandbox Code Playgroud)