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
    评论
babel-import-plugin是一个用于实现组件库/工具库的按需加载的插件。它类似于babel-plugin-transform-imports和babel-plugin-import。它可以自动按需引入需要的组件,从而减少打包文件的大小。不过,实际生产中,建议使用babel-plugin-transform-imports和babel-plugin-import这两个插件中的一个。 使用babel-plugin-import可以实现自动按需引入,具体配置如下: 1. 首先安装babel-plugin-import:npm i babel-plugin-import -D 2. 在babel配置文件中添加以下配置: ```javascript module.exports = { plugins: [ ['import', { libraryName, libraryDirectory: 'es', style: true }, libraryName] ] }; ``` 这里的libraryName是你需要按需引入的组件库的名称。 通过以上配置,你就可以使用import语句来按需引入需要的组件了,例如: ```javascript import { Button } from libraryName; ``` 这样就可以只引入需要的Button组件,而不是整个组件库。 同时,现在的babel也提供了一些API来简化babel-plugin-import的代码或逻辑,例如path.replaceWithMultiple。不过,源码中的一些看似多余的逻辑可能是为了满足特定的场景而保留的。所以,在使用这些API时需要根据实际情况进行判断和选择。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [babel-plugin-my-import:像babel-plugin-transform-imports这样的babel插件](https://download.csdn.net/download/weixin_42166918/18495983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [babel-import-plugin:](https://blog.csdn.net/weixin_48123820/article/details/130476061)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [你不容错过的babel-plugin-import史上最全源码详解!](https://blog.csdn.net/a958014226/article/details/115356326)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值