Jest,env预设和stage-0功能

时间:2017-06-15 22:12:11

标签: javascript reactjs babeljs jestjs babel-jest

我正在尝试配置jest,但面对无法处理es6功能的事实。

要解决此问题,我已将配置添加到package.json:

"jest": {
    "transform": {
      "^.+\\.jsx?$": "./node_modules/babel-jest"
    },
}

我的.babelrc配置:

{
  "presets": [
    "react",
    "es2017",
    "stage-0",
    ["env", {
      "targets": {
        "browsers": ["last 2 versions"]
      },
      "spec": true,
      "modules": false,
      "debug": true
    }],
  ],
  "plugins": [
    ["transform-class-properties", { "spec": true }]
  ]
}

对我来说看起来很合适,但无论如何,jest无法在Test suite failed to run上使用import React from 'react';

中的道具
class App extends Component {
   static propTypes = {}
}

目前我不知道出了什么问题,但看起来这个stage-x功能不仅在env预设中不可用,而且plugins和其他预设被忽略。 但是webpack构建包没有任何错误。 所以看起来像是开玩笑的问题。

可以帮我看看发生了什么事吗?

========== fixed config .babelrc

{
  "presets": [
    "react",
    "es2015",
    "es2016",
    "es2017",
    "stage-0",
    ["env", {
      "targets": {
        "browsers": ["last 2 versions"]
      },
      "spec": true,
      "modules": false,
      "debug": true
    }],
  ],
  "plugins": [
    ["transform-class-properties", { "spec": true }]
  ]
}

package.json

  "jest": {
    "moduleNameMapper": {
      "config.env": "<rootDir>/config/application.production.js",
      "^.+\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|po)$": "<rootDir>/__mocks__/fileMock.js",
      "^.+\\.(css|less)$": "<rootDir>/__mocks__/styleMock.js"
    },
    "moduleFileExtensions": [
      "js",
      "jsx",
      "js",
      "json"
    ]
  },

1 个答案:

答案 0 :(得分:1)

es2017预设不包括es2016es2015。 您可以明确地包含所有这些内容,也可以使用preset-env代替。

此外,您不必在jest配置中显式设置transform属性。

from Jest documentation:

  

注意:安装Jest时会自动安装babel-jest,如果您的项目中存在babel配置,它将自动转换文件。