ESLint和Jest中怎么使用esm

前端开发   发布日期:2023年08月13日   浏览次数:584

本篇内容介绍了“ESLint和Jest中怎么使用esm”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    package.json 配置 type 选项

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

    1. {
    2. "name": "debugger-source-code",
    3. "version": "1.0.0",
    4. "description": "",
    5. "main": "index.js",
    6. "type": "module",
    7. "scripts": {},
    8. "keywords": [],
    9. "author": "",
    10. "license": "ISC",
    11. "dependencies": {}
    12. }

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

    eslint 支持 esm 配置

    eslint 支持 esm 有两种方式:

    • 环境变量使用浏览器环境,支持高阶的 ECMAScript 的语法。

    • 使用处在实验性的 eslint.config.js 文件输出 esm 配置文件。

    1. npm init @eslint/config # 使用命令初始化 eslint 的配置

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

    1. .eslintrc.cjs
    1. module.exports = {
    2. "env": {
    3. "browser": true,
    4. "es2021": true
    5. },
    6. "extends": "eslint:recommended",
    7. "overrides": [
    8. ],
    9. "parserOptions": {
    10. "ecmaVersion": "latest",
    11. "sourceType": "module"
    12. },
    13. "rules": {
    14. }
    15. }

    注意 后缀时

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

    使用 eslint.config.js

    eslint 在新的版本中,实验性开始支持

    1. eslint.config.js
    文件,此文件需要输出一个 esm 的模块,这里不讲配, 一个简单的配置如下:
    1. export default [
    2. {
    3. rules: {
    4. semi: "error",
    5. "prefer-const": "error"
    6. }
    7. }
    8. ]

    jest 中使用 esm

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

    1. npm install jest

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

    1. "scripts": {
    2. "test": "NODE_OPTIONS=--experimental-vm-modules jest"
    3. }

    使用 jsx 语法 esm 支持

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

    • 安装 babel 以及其它依赖包:

      1. babel-jest@bable/core@babel/preset-env@babel/preset-react
    • 配置 babel 配置配置文件;

    1. module.exports = {
    2. presets: [['@babel/preset-env', {targets: {node: 'current'}}], '@babel/preset-react'],
    3. };

    修改 jest 的转换器:

    1. export default {
    2. transform: {
    3. '.[jt]s?$': 'babel-jest' // babel-jest 来转换
    4. },
    5. };

    以上就是ESLint和Jest中怎么使用esm的详细内容,更多关于ESLint和Jest中怎么使用esm的资料请关注九品源码其它相关文章!