babel根据env集成icover plugin的一些总结

为提升项目测试效率,最近多个项目接入了项目效率工具icover,在这过程中也踩了一些坑,分享出来供其他有需求的同学参考。

接入icover主要做两步工作:

1,Modify babel config BABEL_ENV=test模式下使用@58fe/babel-plugin-icover babel插件

2,Add build pattern 给icover 设置 BABEL_ENV=test 

但是由于各个项目的打包构建,babel使用方式,babel版本大同小异,在接入的过程中我们需要熟系babel的配置使用。

先来介绍一下babel的单独使用

babel单独使用有两种方式

1,使用配置文件,安装核心包

tip: babel.config.json (requires v7.8.0 and above)

     babel.config.js if you are using an older Babel version

在实际的项目中类似如下所示皆为babel配置:

  • Project-wide configuration

    • babel.config.json files, with the different extensions (.js, .cjs, .mjs)

  • File-relative configuration

    • .babelrc.json files, with the different extensions (.babelrc, .js, .cjs, .mjs)

    • package.json files with a "babel" key 

命令行对js文件进行compile, 例如: 

./node_modules/.bin/babel src --out-dir lib

将src下的js按照config编译到lib目录

2,安装babel/cli 

命令行对js文件进行compile同上

单独使用的场景较少,下面介绍一下babel集成其他工具使用

在webpack中集成babel:

1,安装核心包

npm install --save-dev babel-loader @babel/core

2,引入babel-loader

3, 抽取babel配置到配置文件

babel.config.js

module.exports = {
  env: {
    test: {
      presets: ["@babel/preset-env", "@babel/preset-react"],
      plugins: [
        ["@58fe/babel-plugin-icover"],
        "@babel/plugin-proposal-optional-chaining",
        "@babel/plugin-proposal-nullish-coalescing-operator",
        [require("@babel/plugin-proposal-class-properties"), { loose: true }],
        "@babel/plugin-transform-regenerator",
        "@babel/plugin-transform-runtime",
      ],
    },
    production: {
      presets: ["@babel/preset-env", "@babel/preset-react"],
      plugins: [
        "@babel/plugin-proposal-optional-chaining",
        "@babel/plugin-proposal-nullish-coalescing-operator",
        [require("@babel/plugin-proposal-class-properties"), { loose: true }],
        "@babel/plugin-transform-regenerator",
        "@babel/plugin-transform-runtime",
      ],
    },
    development: {
      presets: ["@babel/preset-env", "@babel/preset-react"],
      plugins: [
        "@babel/plugin-proposal-optional-chaining",
        "@babel/plugin-proposal-nullish-coalescing-operator",
        [require("@babel/plugin-proposal-class-properties"), { loose: true }],
        "@babel/plugin-transform-regenerator",
        "@babel/plugin-transform-runtime",
      ],
    },
  },
};

webpack打包时会自动pick babel的config文件对对应的目录进行compile。

在vite中使用babel

vite将babel的配置集成到了对应的插件中

@vitejs/plugin-react为例 配置如下:

export default defineConfig({

  plugins: [react({babel: {

    presets: [...],

    // Your plugins run before any built-in transform (eg: Fast Refresh)

    plugins: [...],

    // Use .babelrc files

    babelrc: true,

    // Use babel.config.js files

    configFile: true,

  }})]

})

知道了以上配置相关的知识,添加icover无非是看项目使用那种babel的使用方式,修改对应使用方式的环境,添加新的打包命令脚本即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值