账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请问babel如何配置才能只转换import?
    28
    0

    因为之前写前端习惯用import导入导出模块,毕竟有babel嘛,写nodejs也把这个习惯延续下来了,反正都是要转成es5的

      "scripts": {
        "start": "nodemon src/app.js --exec babel-node --presets es2015,stage-2",
        "build": "babel src -d dist --presets es2015,stage-2",
        "serve": "node dist/app.js",

    但是我今天得知在node端转成es5再执行其实牺牲了很大效率?因为nodejs是最新的,所有语法都是原生支持的,除了import,请问babel如何配置才能只把import转成require

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 伊染年華丶淚蹣跚 普通会员 1楼

      在Babel中,你可以通过以下方式配置只转换import的规则:

      1. 在Babel的配置文件(如babel.config.js)中,设置以下规则:

      javascript module.exports = { presets: [ [ '@babel/preset-env', { targets: { browser: 'last 2 versions', node: 'current' } } ] ], plugins: [ '@babel/plugin-proposal-imports', '@babel/plugin-proposal-optional-exports', '@babel/plugin-proposal-module-name', '@babel/plugin-transform-modules-commonjs', ] };

      1. module.exports对象的presets数组中,定义你的预处理器和插件,包括@babel/preset-env@babel/plugin-proposal-imports@babel/plugin-proposal-optional-exports@babel/plugin-proposal-module-name

      2. @babel/preset-env:这是一个预处理器,用于处理ES6和ES7中的环境变量、对象解构、箭头函数、类和模块化。

      3. @babel/plugin-proposal-imports:这是一个插件,用于处理ES6和ES7中的导入语句。它可以将import语句转换为function表达式,只转换导入的模块名和对象名,而不转换它们的导入路径。

      4. @babel/plugin-proposal-optional-exports:这是一个插件,用于处理ES6和ES7中的optional export关键字。它可以处理从export开始的语句,只处理export defaultexport default default语句,而忽略它们的导出路径。

      5. @babel/plugin-proposal-module-name:这是一个插件,用于处理ES6和ES7中的模块化。它可以处理模块名的重命名,只处理模块名,而忽略它们的导入路径。

      6. plugins数组中,定义你的插件,包括@babel/plugin-proposal-imports@babel/plugin-proposal-optional-exports@babel/plugin-proposal-module-name

      7. @babel/plugin-proposal-imports:这个插件是作为环境变量import的默认转换插件,当module.exports对象被export时,它会被自动应用。

      8. @babel/plugin-proposal-optional-exports:这个插件处理的导出语句包括export defaultexport default default,但不包括export语句。

      9. @babel/plugin-proposal-module-name:这个插件处理的模块名包括export,但不包括export defaultexport default default

      10. module.exports对象的plugins数组的[0]位置,将@babel/plugin-proposal-imports@babel/plugin-proposal-optional-exports@babel/plugin-proposal-module-name添加到presets数组中,例如:

      javascript module.exports = { presets: [ [ '@babel/preset-env', { targets: { browser: 'last 2 versions', node: 'current' } }, '@babel/plugin-proposal-imports', '@babel/plugin-proposal-optional-exports', '@babel/plugin-proposal-module-name' ] ], plugins: [ '@babel/plugin-proposal-module-name', '@babel/plugin-proposal-imports', '@babel/plugin-proposal-optional-exports' ] };

      这样,Babel会将module.exports对象中的import语句转换为function表达式,只转换导入的模块名和对象名,而不转换它们的导入路径,只处理export defaultexport default default语句。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部