ESLint和Jest中使用esm示例详解

 更新时间:2023年03月03日 10:21:31   作者:乔治_x  
这篇文章主要为大家介绍了ESLint和Jest中使用esm示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

package.json 配置 type 选项

node.js 已经支持了 esm 的模式,写 esm 需求开始大于 commonjs 的需求。但问题一些库对 esm 支持相对较慢。下面盘点:eslint 和 jest 中使用 esm 遇到的问题。

{
  "name": "debugger-source-code",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {},
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {}
}

告诉这个项目使用 esm 的方式来处理。

eslint 支持 esm 配置

eslint 支持 esm 有两种方式:

  • 环境变量使用浏览器环境,支持高阶的 ECMAScript 的语法。
  • 使用处在实验性的 eslint.config.js 文件输出 esm 配置文件。
npm init @eslint/config # 使用命令初始化 eslint 的配置

eslint 命令使用问答的方式生成一个配置文件。我们选择的时候按照浏览器 esm 的选项进行选择,得到的一个 .eslintrc.cjs

module.exports = {
    "env": {
        "browser": true,
        "es2021": true
    },
    "extends": "eslint:recommended",
    "overrides": [
    ],
    "parserOptions": {
        "ecmaVersion": "latest",
        "sourceType": "module"
    },
    "rules": {
    }
}

注意 后缀时 .cjs 的内容, 输出的是一个 commonjs 的模块的配置文件,在现有的版本中是不支持的 esm 的配置文件,如果配置文件被编辑器报了非 esm 错误,可以将配置文件添加到 .eslintignore 文件中,或者使用其他类型文件配置项目。

使用 eslint.config.js

eslint 在新的版本中,实验性开始支持 eslint.config.js 文件,此文件需要输出一个 esm 的模块,这里不讲配, 一个简单的配置如下:

export default [
    {
        rules: {
            semi: "error",
            "prefer-const": "error"
        }
    }
]

jest 中使用 esm

当然这里不考虑扩展 js 语法到 JSX/TSX 等其他拓展文件,原生使用 esm 的语法

npm install jest

如果只是普通的 JS esm 语法其实不用配置 Jest, 但是需要启动 Jest 的时候添加 Node.js 的属性支持

"scripts": {
    "test": "NODE_OPTIONS=--experimental-vm-modules jest"
}

使用 jsx 语法 esm 支持

这里我们还是使用 babel, 使用 babel 的流程如下:

  • 安装 babel 以及其它依赖包: babel-jest、@bable/core、@babel/preset-env、@babel/preset-react
  • 配置 babel 配置配置文件;
module.exports = {
  presets: [['@babel/preset-env', {targets: {node: 'current'}}], '@babel/preset-react'],
};

修改 jest 的转换器:

export default {
  transform: {
    '\\.[jt]s?$': 'babel-jest' // babel-jest 来转换
  },
};

小结

  • eslint 支持 esm 中遇到的问题以及解决方法
  • jest 中使用 esm 的两种方式

参考

以上就是ESLint和Jest中使用esm示例详解的详细内容,更多关于ESLint Jest使用esm的资料请关注脚本之家其它相关文章!

相关文章

  • 使用watch在微信小程序中实现全局状态共享

    使用watch在微信小程序中实现全局状态共享

    这篇文章主要给大家介绍了关于如何使用watch在小程序中实现全局状态共享的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用微信小程序具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • js 一个关于图片onload加载的事

    js 一个关于图片onload加载的事

    前几天一个项目让我头疼了很久,一个关于图片加载时的loading效果,因为不是太懂js,所以在网上各种找资料,但还是不理想,无赖苦心研究,终于有了一点眉目了,虽然个中还有一些道理不懂,至少目的达到了
    2013-11-11
  • javascript拖拽应用实例

    javascript拖拽应用实例

    这篇文章主要为大家详细介绍了javascript拖拽应用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 代码详解JS操作剪贴板

    代码详解JS操作剪贴板

    本篇文章给大家介绍了如何用JS操作剪贴板的功能,并把实例代码做了分享,需要的朋友学习下吧。
    2018-02-02
  • JS实现定时自动关闭DIV层提示框的方法

    JS实现定时自动关闭DIV层提示框的方法

    这篇文章主要介绍了JS实现定时自动关闭DIV层提示框的方法,可实现加载时载入js代码控制div层提示框自动关闭的效果,非常简单实用,需要的朋友可以参考下
    2015-05-05
  • JS中eval函数的使用示例

    JS中eval函数的使用示例

    eval函数会将 obj 当做代码去执行一遍,下面举个例子为大家详细介绍下具体的使用方法,感兴趣的朋友可以参考下哈,希望对大家有所帮助
    2013-07-07
  • Javascript 刷新全集常用代码

    Javascript 刷新全集常用代码

    Javascript刷新页面实现代码,需要的朋友可以参考下。
    2009-11-11
  • 浅谈javascript六种数据类型以及特殊注意点

    浅谈javascript六种数据类型以及特殊注意点

    这篇文章主要介绍了javascript六种数据类型以及特殊注意点,有需要的朋友可以参考一下
    2013-12-12
  • 微信小程序模板消息推送的两种实现方式

    微信小程序模板消息推送的两种实现方式

    这篇文章主要介绍了微信小程序模板消息推送的两种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • JavaScript中的DOM和Timer的基本操作

    JavaScript中的DOM和Timer的基本操作

    掌握JavaScript中的DOM操作可通过id、class、标签名及CSS选择器进行元素选择和内容修改,Timer定时器功能包括设置延时和间隔执行,详细介绍了事件处理器和事件监听函数的使用,以及避免事件覆盖的建议
    2024-10-10

最新评论