Jest: ES6 рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЯреЛрдХрди рдЖрдпрд╛рдд

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдирд╡ре░ 2016  ┬╖  93рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/jest

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдПрдХ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЛ

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдореИрдВ рдЕрднреА рдЕрдкрдиреЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╕реЗ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рд╣реА рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЙрди рд╕рднреА рдореЗрдВ рдЖрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рддрдХ рдЗрд╕рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рдкрд╛рдпрд╛ рд╣реВрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЗрд╕реНрдЯ рдореЗрдВ рдореЗрд░реЗ рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди рдореЗрдВ рдмреЗрдмреЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ 'рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЯреЛрдХрди рдЖрдпрд╛рдд' рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ рддрдХ, рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм рдореИрдВ рдПрдХ .babelrc рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рддреЛ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЧреБрдЬрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкрд░реАрдХреНрд╖рдг, рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдПрдХ рд╣реА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЯреЛрдХрди рдЖрдпрд╛рдд рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рдЪрд┐рддреНрд░ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рджрд░реНрдЬрди рдЙрддреНрддреАрд░реНрдг рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдЬреЛ рд╕рднреА ES6 рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред .babelrc рдХреЗ рдмрд┐рдирд╛ рд╕рднреА 14 рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рдмрдЧ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЧрд┐рдЯрд╣рдм рдкрд░ рдПрдХ рдиреНрдпреВрдирддрдо рднрдВрдбрд╛рд░ рд╣реИ рдХрд┐ рд╣рдо npm install рдФрд░ npm test ред

рдЗрд╕реЗ рдореЗрд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╕реЗ npm run setup рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдФрд░ npm run test рдЪрд▓рд╛рдХрд░ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрднреА рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдм рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдмреЗрдмреЗрд▓-рдЬреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рдЬреЗрд╕реНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ --debug рд╕рд╛рде рдЪрд▓рд╛рдПрдВ рдФрд░ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд┐рдВрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреВрд░реНрдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

jest version = 16.0.2
test framework = jasmine2
config = {
  "scriptPreprocessor": "/Users/myMac/Developer/works-in-progress/open-source-maintaining/scalable-react-boilerplate/config/testing/preprocessor.js",
  "moduleFileExtensions": [
    "js",
    "jsx",
    "json"
  ],
  "moduleDirectories": [
    "node_modules",
    "bower_components",
    "shared"
  ],
  "rootDir": "/Users/myMac/Developer/works-in-progress/open-source-maintaining/scalable-react-boilerplate",
  "name": "-Users-myMac-Developer-works-in-progress-open-source-maintaining-scalable-react-boilerplate",
  "setupFiles": [],
  "testRunner": "/Users/myMac/Developer/works-in-progress/open-source-maintaining/scalable-react-boilerplate/node_modules/jest-jasmine2/build/index.js",
  "automock": false,
  "bail": false,
  "browser": false,
  "cacheDirectory": "/var/folders/nq/7kdqy15d3m399326f7wtb_6w0000gn/T/jest",
  "clearMocks": false,
  "coveragePathIgnorePatterns": [
    "/node_modules/"
  ],
  "coverageReporters": [
    "json",
    "text",
    "lcov",
    "clover"
  ],
  "globals": {},
  "haste": {
    "providesModuleNodeModules": []
  },
  "mocksPattern": "__mocks__",
  "moduleNameMapper": {},
  "modulePathIgnorePatterns": [],
  "noStackTrace": false,
  "notify": false,
  "preset": null,
  "preprocessorIgnorePatterns": [
    "/node_modules/"
  ],
  "resetModules": false,
  "testEnvironment": "jest-environment-jsdom",
  "testPathDirs": [
    "/Users/myMac/Developer/works-in-progress/open-source-maintaining/scalable-react-boilerplate"
  ],
  "testPathIgnorePatterns": [
    "/node_modules/"
  ],
  "testRegex": "(/__tests__/.*|\\.(test|spec))\\.jsx?$",
  "testURL": "about:blank",
  "timers": "real",
  "useStderr": false,
  "verbose": null,
  "watch": false,
  "cache": true,
  "watchman": true,
  "testcheckOptions": {
    "times": 100,
    "maxSize": 200
  }
}

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдк рд╕рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ ES рдореЙрдбреНрдпреВрд▓ рдиреЛрдб рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЬрдм рдЖрдк рдЙрдиреНрд╣реЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рдмрд┐рд▓реНрдб рдкрд╛рдЗрдкрд▓рд╛рдЗрди (рд╡реЗрдмрдкреИрдХ, рд░реЛрд▓рдЕрдк) рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдмреЗрдмрд▓рдЖрд░рд╕реА рдореЗрдВ "рдкрд░реАрдХреНрд╖рдг" рдПрдирд╡реА рдХреЗ рд▓рд┐рдП рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХреЙрдордирдЬреЗрдПрд╕ рдореЗрдВ рд╕рдВрдХрд▓рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рджреЗрдЦреЗрдВ https://babeljs.io/docs/usage/babelrc/#env -option рдФрд░ https://babeljs.io/docs/ рдкреНрд▓рдЧрдЗрдиреНрд╕/рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо-рдПрд╕2015-рдореЙрдбреНрдпреВрд▓-рдХреЙрдордирдЬ/

{
  "env": {
    "production": {
      "plugins": ["transform-es2015-modules-commonjs"]
    }
  }
}

рд╕рднреА 93 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореЗрд░реЗ рдкрд╛рд╕ рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡ рдФрд░ рдЬреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ,
рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА init AwesomeProject
рд╕реАрдбреА рд╡рд┐рд╕реНрдордпрдХрд╛рд░реАрдкрд░рд┐рдпреЛрдЬрдирд╛

рдлрд┐рд░ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдЬреИрд╕реЗ npm рджреЗрд╢реА-рдЖрдзрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ --save
рджреЗрд╢реА-рдЖрдзрд╛рд░ рд╕реЗ рдХрд┐рд╕реА рднреА рдШрдЯрдХ рдХреЛ рдЕрдкрдиреА index.ios.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ

npm рдкрд░реАрдХреНрд╖рдг рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛:
../test/node_modules/native-base/index.js:4
'./Components/vendor/react-native-drawer' рд╕реЗ рджрд░рд╛рдЬ рдЖрдпрд╛рдд рдХрд░реЗрдВ;
^^^^^^
рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐: рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЯреЛрдХрди рдЖрдпрд╛рдд

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓рд┐рдВрдХ @cpojer рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдирдорд╕реНрддреЗ! 'transformIgnorePatterns' рдХрд░рддрд╛ рд╣реИ....mmmm...рдХрд┐ рдЗрд╕реЗ рдЕрд╡рд╢реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛)
рд▓реЗрдХрд┐рди рдореИрдВ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рд╕реЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдЙрд╕ рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдЗрд╕ рд╕рд╣рд╛рд░рд╛ рдиреЗ рдореЗрд░реА рдорджрдж рдХреА :)

{
  "jest": {
    "verbose": true,
    "moduleDirectories": ["node_modules", "src"]
  },
}

UPD1
рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореЗрд░реА рдЬреЗрд╕реНрдЯ config рд╣реИ:

"jest": {
    "verbose": true,
    "transform": {
      "^.+\\.js$": "babel-jest",
      "^.+\\.(css|scss|less)$": "jest-css-modules"
    },
    "globals": {
      "NODE_ENV": "test"
    },
    "moduleFileExtensions": [
      "js",
      "jsx"
    ],
    "moduleDirectories": [
      "node_modules",
      "src/frontend",
      "src/shared"
    ]
  },

... рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ :)

рд╕рд╛рджрд░, рдкрд╛рд╡реЗрд▓ рдЯреНрд░реАрдЯреАрдХреЛрд╡

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕рдорд╕реНрдпрд╛ рд╣рдореЗрд╢рд╛ jest --no-cache рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдареАрдХ рдХреА рдЬрд╛рддреА рд╣реИред рдХреНрдпрд╛ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХреЗ рдмрд┐рдирд╛ рдХреИрд╢реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЗрд╕реНрдЯ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдореИрдВ рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рдг-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдРрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ред ES6 рдЖрдпрд╛рдд рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╣рдореЗрд╢рд╛ "рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЯреЛрдХрди рдЖрдпрд╛рдд" рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдореИрдВрдиреЗ рдЙрди рд╕рднреА рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдиреЛ-рдХреИрд╢ рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рдЙрдиреНрд╣реЗрдВ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!)

рдореИрдВ рд╣рд╛рд░ рдорд╛рдирддрд╛ рд╣реВрдВред рдХреЛрдИ рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрдирддрд╛ рд╣реЛ рд░рд╣реА рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ

рдЖрдк рд╕рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ ES рдореЙрдбреНрдпреВрд▓ рдиреЛрдб рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЬрдм рдЖрдк рдЙрдиреНрд╣реЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рдмрд┐рд▓реНрдб рдкрд╛рдЗрдкрд▓рд╛рдЗрди (рд╡реЗрдмрдкреИрдХ, рд░реЛрд▓рдЕрдк) рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдмреЗрдмрд▓рдЖрд░рд╕реА рдореЗрдВ "рдкрд░реАрдХреНрд╖рдг" рдПрдирд╡реА рдХреЗ рд▓рд┐рдП рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХреЙрдордирдЬреЗрдПрд╕ рдореЗрдВ рд╕рдВрдХрд▓рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рджреЗрдЦреЗрдВ https://babeljs.io/docs/usage/babelrc/#env -option рдФрд░ https://babeljs.io/docs/ рдкреНрд▓рдЧрдЗрдиреНрд╕/рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо-рдПрд╕2015-рдореЙрдбреНрдпреВрд▓-рдХреЙрдордирдЬ/

{
  "env": {
    "production": {
      "plugins": ["transform-es2015-modules-commonjs"]
    }
  }
}

рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, cpojer. рдХрд▓ рдореИрдВрдиреЗ рдЕрдкрдиреА рдиреЛрдб рдПрдирд╡реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреЛрдб рдПрдирд╡реА рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрд╕реНрдЯ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдиреЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдирд╣реАрдВред рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдиреЛрдб-рдПрдирд╡реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдереАред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред @cpojer рдХрд╛ рдлрд┐рдХреНрд╕ рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рджред

@cpojer рдХреЗ рдлрд┐рдХреНрд╕ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдзрдиреНрдпрд╡рд╛рдж

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛, рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд┐рдпрд╛, рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдЕрдкрдиреЗ рдХрд╛рдлреА рд╕рд░рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рдРрдк рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

npm test рдпрд╛ jest рдЪрд▓рд╛рддреЗ рд╕рдордп рдпрд╣ 'SyntaxError: Unexpected token import'

.рдмреЗрдмреЗрд▓рдЖрд░рд╕реА

{
"presets": ["react-native"]
}

.рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди

{
  "name": "BeeAppy",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "babel-jest": "^20.0.3",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "babel-preset-react-native": "^2.0.0",
    "enzyme": "^2.8.2",
    "eslint": "^4.0.0",
    "eslint-plugin-react": "^7.1.0",
    "jest": "^20.0.4",
    "react-addons-test-utils": "^15.6.0",
    "react-dom": "^15.6.1",
    "react-test-renderer": "^16.0.0-alpha.6"
  },
  "scripts": {
    "start": "react-native start",
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "test": "node node_modules/jest/bin/jest.js --watch"
  },
  "jest": {
    "preset": "react-native"
  },
  "dependencies": {
    "react": "16.0.0-alpha.6",
    "react-native": "^0.44.0",
    "react-navigation": "^1.0.0-beta.11"
  }
}

рдХреНрдпрд╛ @cpojer рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ env рд╕реНрдирд┐рдкреЗрдЯ
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИ!
рдХреЛрдИ рднреА рд╕рд╣рд╛рдпрддрд╛ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧреА, рдзрдиреНрдпрд╡рд╛рдж

@JessicaBarclay рдЗрд╕реЗ рдЖрдкрдХреЗ .babelrc рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдХрджрд░:

"env": {
          "development": {
                 "plugins": ["transform-es2015-modules-commonjs"]
          }
}

рдЖрд╣ рдзрдиреНрдпрд╡рд╛рдж @rlage ! рдХреНрд░рдордмрджреНрдз :)

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ .babelrc рдХреЛ рд╕рд╣реА presets рдФрд░ plugins рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдерд╛, рдЬреИрд╕реЗ рдХрд┐ NODE_ENV=test рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдерд╛ред package.json ред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, "рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЯреЛрдХрди рдЖрдпрд╛рдд" рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓:

"scripts": {
  ...
  "test": "jest",
}

рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж:

"scripts": {
  ...
  "test": "NODE_ENV=test jest",
}

@jlyman

рдЬреЗрд╕реНрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрд╕реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NODE_ENV рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдиреЛрдЯ: рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ Babel рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ Babel рдХреЗ env рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ Jest рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ NODE_ENV рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛ред рдЬрдм рдХреЛрдИ NODE_ENV рд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмреИрдмреЗрд▓ рдЬреИрд╕реЗ рд╡рд┐рдХрд╛рд╕ рдЦрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдпрд╣ .babelrc рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

{"env": {
    "development": {
        "plugins": ["transform-es2015-modules-commonjs"]
    },
    "test": {
        "plugins": ["transform-es2015-modules-commonjs"]
    }
}}

рдиреЛрдЯ: рдпрд╣ рдЕрдЬреАрдм рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреБрдВрдЬрд┐рдпрд╛рдБ рджреЛрдиреЛрдВ рдореМрдЬреВрдж рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред

рддрдм рдореИрдВ рдмрд╕ рдлреЛрди рдХрд░рддрд╛ рд╣реВрдВ:

node_modules/.bin/jest

рдпрд╛ package.json рдХреЗ рд╕рд╛рде:

{"scripts": {"test": "jest"}}

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП NODE_ENV рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

@laszbalo рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдЙрд╕ рджреВрд╕рд░реЗ env рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЪрд╛рд▓ рдЪрд▓ рд░рд╣реА рд╣реИред рдЕрдЧрд░ рдореИрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд╕реНрдкрд╖реНрдЯ NODE_ENV рдЙрдкрд╕рд░реНрдЧ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдбреЙрдХреНрд╕ рдХреЗ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рднреА рдкрдврд╝рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдЙрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ред

@jlyman рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдХреМрди рд╕рд╛ рд╕рдорд╛рдзрд╛рди?

@doudounannan рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ред рдореИрдВ рдЬрд┐рд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЬрд╛ рд░рд╣рд╛ рдерд╛ рд╡рд╣ рд╡рд╣реА рдерд╛ рдЬреЛ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛ ред рдЬреИрд╕реЗ @laszbalo рдиреЗ рдХрд╣рд╛, рдпрд╣ рдбреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ Babel рдХреЗ рддрд╣рдд рдХрд╣рддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдпрд╛ рддреЛ @laszbalo рдХрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╛ NODE_ENV test рдореЗрд░рд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдЬрдм рдореИрдВ "transformIgnorePatterns": [ ] рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдмреЗрдмреЗрд▓ рдореЗрд░реА рдкрд░реАрдХреНрд╖рдг рдХреА рдЧрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ transformIgnorePatterns рд╡рд┐рдХрд▓реНрдк рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджреЗрддрд╛ рд╣реВрдВ рддреЛ рдмреЗрдмреЗрд▓ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ... рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ .babelrc рд╣реИ (рдореИрдВ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдордЬрд╝рд╛рдХ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ):

{
  "env": {
    "test": {
      "plugins": ["transform-es2015-modules-commonjs"]
    }
  }
}

рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдЪрд╛рд░ https://github.com/facebook/jest/issues/2550#issuecomment -290812720 рд╕реЗ рдорд┐рд▓рд╛ рдХреНрдпреЛрдВрдХрд┐ #770 рдореЗрдВ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рдпрд╛ рдпрд╣рд╛рдБ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧ рд░рд╣рд╛ рдерд╛ ...

рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ:

    /.../node_modules/@expo/react-native-action-sheet/ActionSheet.ios.js:3
    import React from 'react';
    ^^^^^^

    SyntaxError: Unexpected token import

      at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/ScriptTransformer.js:289:17)
      at Object.<anonymous> (node_modules/@expo/react-native-action-sheet/index.js:1:107)
      at Object.<anonymous> (node_modules/react-native-gifted-chat/src/GiftedChat.js:10:29)
{
  "env": {
    "production": {
      "plugins": ["transform-es2015-modules-commonjs"]
    },
    "development": {
      "plugins": ["transform-es2015-modules-commonjs"]
    },
    "test": {
      "plugins": ["transform-es2015-modules-commonjs"]
    }
  },
  "presets": [
    "react-native"
  ],
  "plugins": [
    ["module-resolver", {
            "cwd": "babelrc",
        }]
  ]
}
"jest": {
    "preset": "react-native",
    "setupFiles": [
        "./__tests__/setup.js"
    ],
    "testRegex": "/__tests__/.*\\.spec\\.js$"
}

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЬреЗрд╕реНрдЯ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рд╛:

"jest": {
     "preset": "react-native",
     "transformIgnorePatterns": [
          "node_modules/(?!react-native|react-navigation)/"
      ]
  }

рдФрд░ рдЕрдм рдЬрдм рдореИрдВ рдЬреЗрд╕реНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

ReferenceError: рдЕрдЬреНрдЮрд╛рдд рдкреНрд▓рдЧрдЗрди "рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо-рд░рд┐рдкреНрд▓реЗрд╕-рдСрдмреНрдЬреЗрдХреНрдЯ-рдЕрд╕рд╛рдЗрди" рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ "/Users/caalcaz/Documents/Projects/Enterprise-app/node_modules/enzyme/.babelrc" 0 рдкрд░, "/Users/caalcaz/ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝/рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ/рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝-рдРрдк/рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕/рдПрдВрдЬрд╛рдЗрдо"

@calcazar рдЖрдкрдХреЗ node_modules/enzyme/.babelrc рдореЗрдВ рдХреНрдпрд╛ рд╣реИ?

рдореИрдВрдиреЗ рдЗрд╕реЗ рдмреЗрдмреЗрд▓-рдЬреЗрд╕реНрдЯ _рдФрд░_ рдЯреАрдПрд╕-рдЬреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ред рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди рдореЗрдВ:

"jest": {
    "modulePaths": [
        "<rootDir>/src",
        "<rootDir>/node_modules"
    ],
    "globals": {
        "NODE_ENV": "test"
    },
    "verbose": true,
    "moduleFileExtensions": [
        "ts",
        "tsx",
        "js",
        "jsx",
        "json"
    ],
    "transform": {
        "^.+\\.jsx?$": "babel-jest",
        "^.+\\.tsx?$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
    },
    "transformIgnorePatterns": ["/node_modules/(?!lodash-es)"], // <-- this allows babel to load only the node modules I need (which is lodash-es) and ignore the rest
    "testRegex": "test/.*\\.spec\\.ts$",
    "setupFiles": [
        "<rootDir>/test/jest-pretest.ts"
    ],
    "testEnvironment": "node",
    "moduleNameMapper": {
        "aurelia-(.*)": "<rootDir>/node_modules/$1"
    },
    // some coverage and results processing options
},

рдлрд┐рд░ .babelrc рдореЗрдВ (рдЬрд┐рд╕реЗ рдореИрдВ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ)

{
    "env": {
        "test": {
        "plugins": ["transform-es2015-modules-commonjs"]
        }
    }
}

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ! (рдпрд╣ рдПрдХ рдСрд░реЗрд▓рд┐рдпрд╛ рдРрдк рдХреЗ рд▓рд┐рдП рд╣реИ рдЗрд╕рд▓рд┐рдП YMMV)

@ ThinkOfaNumber

рдореИрдВ рдпрд╣реА рджреЗрдЦрддрд╛ рд╣реВрдВред рдПрдХ FYI рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ Enzyme V3.0 . рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБ

{
  "presets": ["airbnb"],
  "plugins": [
    ["transform-replace-object-assign", "object.assign"],
  ],
}

@thinkOfaNumber рдЕрдкрдирд╛ рд╕реБрдЭрд╛рд╡ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдХрд┐ рдЬреЗрд╕реНрдЯ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ es6 рдореЙрдбреНрдпреВрд▓ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдХреБрдВрдЬреА рдпрд╣рд╛рдБ рд╣реИ

"jest": {
    "modulePaths": [
        "<rootDir>/src",
        "<rootDir>/node_modules"
    ],
    "transformIgnorePatterns": ["/node_modules/(?!lodash-es)"], // <-- this allows babel to load only the node modules I need (which is lodash-es) and ignore the rest

рдпрд╣ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

@rochapablo рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ред рдХреЛрдЗ рднрд╛рдЧреНрдп?

рдирд╣реАрдВ, рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рддред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдЕрдм рддрдХ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

рдЕрдиреБрд╕рд░рдг рднреА

@rochapablo рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рд╣реИ?
рдореИрдВ рдЙрд╕ рдШрдЯрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬрд┐рд╕рдореЗрдВ GiftedChat рдПрдХ рдмрдЪреНрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ ...

@todorone , рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

"transformIgnorePatterns": [
      "node_modules/(?!react-native-gifted-chat)/"
]

@rochapablo рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕рд╕реЗ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реАред рдореИрдВрдиреЗ transformIgnorePatterns рд░реЗрдЧреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдЦреЗрд▓рдиреЗ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реБрдЖред

"transform": { "^.+\\.js$": "babel-jest", "^.+\\.jsx?$": "babel-jest" },
рдЙрдкрд░реЛрдХреНрдд рдХреЛ рдЬреЗрд╕реНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ

@rochapablo рдХреНрдпрд╛ рдЖрдкрдиреЗ jest-expo рдкреНрд░реАрд╕реЗрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ? рдХреЛрдЗ рднрд╛рдЧреНрдп? рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ & transformIgnorePatterns

рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рд╛рдирдд рдЖрдпрд╛рдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
image

@testacode рдЬреЛ рдПрдХ рдЧрддрд┐рд╢реАрд▓ import , рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЖрд╡рд╢реНрдпрдХ рдмреЗрдмреЗрд▓ рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд╝рд╛ рд╣реИ? https://facebook.github.io/jest/docs/en/webpack.html#using -with-webpack-2 рдХреЗ рдиреАрдЪреЗ рджреЗрдЦреЗрдВ

@SimenB рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣реА рдореИрдВ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рдерд╛!

рдпрд╣ рд░реЛрдЪрдХ рд╣реИред рдХреБрдЫ рд╣рд╛рд▓рд┐рдпрд╛ рдЕрдкрдбреЗрдЯ рдиреЗ рдмреЗрдмреЗрд▓-рдЬреЗрд╕реНрдЯ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЬреЛрдбрд╝ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рддреЛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ:

npm install babel-jest --save-dev

рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕реЗ рдЕрдм рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ...

рдореИрдВрдиреЗ рдмрд╕ рдмреЗрдмреЗрд▓-рдЬреЗрд╕реНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛:
npm i babel-jest

рд╕рд╛рде рд╣реА, рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде .babelrc рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рди рднреВрд▓реЗрдВ:

{
    "presets": ["env", "react"]
}

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

.babelrc :

{
    "presets": ["env", "stage-3"],
    "plugins": ["transform-class-properties"]
}

package.json :

"scripts": {
    "test": "jest --forceExit"
},
"devDependencies": {
    "babel-core": "^6.11.4",
    "babel-jest": "^21.2.0",
    "babel-plugin-transform-class-properties": "^6.24.1",
    "babel-preset-env": "^1.6.1",
    "babel-preset-stage-3": "^6.24.1",
    "jest": "^21.2.0"
}

@hqro рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдзрдиреНрдпрд╡рд╛рдж

рдореЗрд░реЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдореЗрд░реА .babelrc рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдерд╛:

{
  "presets": ["react", ["env", { "modules": false }]],
  "plugins": [ ... ]
}

рдФрд░ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ "рдкрд░реАрдХреНрд╖рдг" рдкрд░реНрдпрд╛рд╡рд░рдг рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

{
  "presets": ["react", ["env", { "modules": false }]],
  "plugins": [ ... ],
  "env": {
    "test": {
      "presets": ["react", "env"],
    }
  }
}

@nemoDreamer рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдкреНрд░реАрд╕реЗрдЯ рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ

{
  "presets": ["react", ["env", { "modules": false }]],
  "plugins": [ ... ],
  "env": {
    "test": {
      "plugins": ["transform-es2015-modules-commonjs"],
    }
  }
}

рдореИрдВ рдЬреЛ рднреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИред

> cross-env NODE_ENV=test jest --no-cache

 FAIL  src\views\Pay\__tests__\Pay.test.js
  тЧП Test suite failed to run

    C:\Users\***\Documents\Project\***\node_modules\ne-rc\lib\index.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import _Alert from './Alert';
                                                                                             ^^^^^^

    SyntaxError: Unexpected token import

      11 |  * <strong i="6">@param</strong> {Array<Object>} [data] цпПф╕АчзНхИЖцЬЯчЪДшпжч╗Жф┐бцБп data=[{},{}...]
      12 |  * <strong i="7">@param</strong> {Number} [defaultSelected] щ╗ШшодщАЙф╕нчЪДф╕ЛцаЗ
    > 13 |  * <strong i="8">@param</strong> {Funtion} [onClick] чВ╣хЗ╗шзжхПСф║Лф╗╢
      14 |  * <strong i="9">@param</strong> {Number} [columnNum] ф╕АшбМцЬЙхдЪх░СхИЧ
      15 |  *
      16 |  * <strong i="10">@example</strong>

      at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:316:17)
      at Object.<anonymous> (src/components/Installment/Installment.jsx:13:13)
      at Object.<anonymous> (src/components/Installment/index.js:8:20)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        3.693s

рдпрд╣рд╛рдВ рдореЗрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВред

* .рдмреЗрдмреЗрд▓рдЖрд░рд╕реА *

{
  "presets": [
    [
      "env",
      {
        "modules": false
      }
    ],
    // webpack understands the native import syntax, and uses it for tree shaking

    "es2015",
    "stage-2",
    // Specifies what level of language features to doPay.

    // Stage 2 is "draft", 4 is finished, 0 is strawman.

    // See https://tc39.github.io/process-document/

    "react"
    // Transpile React components to JavaScript
  ],
  "env": {
    "test": {
      "presets": ["env", "react", "stage-2"],
      "plugins": [
        "transform-es2015-modules-commonjs"
      ]
    }
  }
}

рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди

{
  "main": "index.js",
  "scripts": {
    "dev": "cross-env NODE_ENV=development node ./server/server.js",
    "api": "cross-env NODE_ENV=api node ./server/server.js",
    "clean": "rm -rf dist",
    "dist": "npm run clean && cross-env NODE_ENV=production webpack --config ./webpack/index.js --progress --colors",
    "online": "cross-env NODE_ENV=development node ./server/online.js",
    "lint": "node ./node_modules/eslint/bin/eslint.js ./src --fix",
    "test": "cross-env NODE_ENV=test jest --no-cache",
    "test:watch": "npm test --watch",
    "stats": "npm run clean && cross-env NODE_ENV=production webpack --config ./webpack/index.js --profile --json > stats.json",
    "gatest": "node ./service/gatest.js"
  },
  "pre-commit": [
    "lint"
  ],
  "jest": {
    "verbose": true,
    "modulePaths": [
      "<rootDir>/src",
      "<rootDir>/node_modules"
    ],
    "setupFiles": [
      "./test/setup.js"
    ],
    "moduleFileExtensions": [
      "js",
      "jsx",
      "json",
      "md"
    ],
    "moduleDirectories": [
      "node_modules"
    ],
    "testMatch": [
      "<rootDir>/src/**/__tests__/**/*.{js,jsx,mjs}",
      "<rootDir>/src/**/?(*.)(spec|test).{js,jsx,mjs}"
    ],
    "transform": {
      "^.+\\.(js|jsx|mjs)$": "<rootDir>/node_modules/babel-jest",
      "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
      "^(?!.*\\.(js|jsx|mjs|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
    },
    "testEnvironment": "jsdom"
  },
  "devDependencies": {
    "asset-inject-html-webpack-plugin": "^0.9.1",
    "autoprefixer": "^7.1.3",
    "babel": "^6.23.0",
    "babel-core": "^6.26.0",
    "babel-eslint": "^8.2.1",
    "babel-jest": "^22.4.1",
    "babel-loader": "^7.1.2",
    "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
    "babel-preset-env": "^1.6.1",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-jest": "^22.4.1",
    "babel-preset-react": "^6.24.1",
    "babel-preset-stage-2": "^6.24.1",
    "babel-register": "^6.26.0",
    "better-npm-run": "0.1.0",
    "body-parser": "^1.17.2",
    "chalk": "^2.1.0",
    "cross-env": "^5.0.5",
    "css-loader": "^0.28.5",
    "deepmerge": "^2.0.1",
    "enzyme": "^3.3.0",
    "eslint": "^4.5.0",
    "eslint-config-standard": "^11.0.0-beta.0",
    "eslint-config-standard-jsx": "^4.0.2",
    "eslint-plugin-import": "^2.2.0",
    "eslint-plugin-node": "^5.1.1",
    "eslint-plugin-promise": "^3.5.0",
    "eslint-plugin-react": "^7.3.0",
    "eslint-plugin-standard": "^3.0.1",
    "exports-loader": "^0.6.4",
    "express": "^4.15.4",
    "extract-text-webpack-plugin": "^3.0.0",
    "file-loader": "^1.1.6",
    "git-repo-info": "^1.4.1",
    "glob": "^7.1.2",
    "happypack": "^4.0.1",
    "html-loader": "^0.5.1",
    "html-webpack-plugin": "^2.30.1",
    "idb": "^2.0.4",
    "imports-loader": "^0.7.0",
    "jest": "^22.4.2",
    "lodash.range": "^3.2.0",
    "mocha": "^5.0.0",
    "node-sass": "^4.5.3",
    "node-xlsx": "^0.11.2",
    "postcss-loader": "^2.0.6",
    "pre-commit": "^1.2.2",
    "react-hot-loader": "^3.0.0-beta.6",
    "react-test-renderer": "^16.2.0",
    "redux-logger": "^3.0.6",
    "regenerator-runtime": "^0.11.1",
    "request": "^2.74.0",
    "require-reload": "^0.2.2",
    "rimraf": "^2.6.0",
    "sass-loader": "^6.0.6",
    "script-loader": "^0.7.0",
    "sinon": "^4.2.0",
    "style-loader": "^0.19.1",
    "uglify-js": "^3.0.28",
    "url-loader": "^0.6.2",
    "webpack": "^3.5.5",
    "webpack-bundle-analyzer": "^2.9.0",
    "webpack-dev-middleware": "^2.0.4",
    "webpack-dev-server": "^2.7.1",
    "webpack-hot-middleware": "^2.18.2",
    "webpack-merge": "^4.1.0",
    "worker-loader": "^1.1.0"
  }
}

рдкреНрд░реАрд╕реЗрдЯ рдХреЛ .babelrc рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ "env" рдмреНрд░реИрдХреЗрдЯ рдХреЗ рдмреАрдЪ рд╣реИ ["env"] , рдЗрд╕ рддрд░рд╣:

  "env": {
    "test": {
      "presets": [["env"], "stage-2"],
      "plugins": ["transform-es2015-modules-commonjs", "dynamic-import-node"]
    }
  }

рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ "modules: false" рд╣реИред

рд╕рд╛рде рд╣реА, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЬреЗрд╕реНрдЯ node_modules рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ , cf https://facebook.github.io/jest/docs/en/configuration.html#transformignorepatterns -array-string

рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рднреА import ... node_modules рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

transformIgnorePatterns: []

рдЖрдкрдХреЗ рдЬреЗрд╕реНрдЯ config.

рдЙрдореНрдореАрдж рд╣реИ рдпреЗ рдорджрдж рдХрд░реЗрдЧрд╛!

@florentchauveau рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@todorone @rochapablo рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛? рдореИрдВ рднреА рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ-

    import * as React from 'react';
    ^^^^^^

    SyntaxError: Unexpected token import

      at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:316:17)
      at Object.<anonymous> (node_modules/@expo/react-native-action-sheet/index.js:1:107)

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреЗрд╡рд▓ рдШрдЯрдХреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдорд┐рд▓ рд░рд╣реА рд╣реИ
GiftedChat - https://github.com/FaridSafi/react-native-gifted-chatред
рд╢рд╛рдпрдж рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ @expo/react-native-action-sheet рдХреЛ ES6 рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд┐рдк рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ GiftedChat рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ? рд▓реЗрдХрд┐рди jest / ts-jest (рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ) рдкреНрд░реАрд╕реЗрдЯ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдкрд░ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рдореЗрд░реА рдЬреЗрд╕реНрдЯ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ -

    "jest": {
        "preset": "react-native",
        "moduleFileExtensions": [
            "ts",
            "tsx",
            "js"
        ],
        "transform": {
            "^.+\\.(js)$": "<rootDir>/node_modules/babel-jest",
            "\\.(ts|tsx)$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
        },
        "transformIgnorePatterns": [
            "node_modules/(?!rn-placeholder|react-native|react-navigation|native-base|react-native-datepicker|native-base-shoutem-theme|@shoutem/animation|@shoutem/ui|tcomb-form-native)"
        ],
        "setupTestFrameworkScriptFile": "<rootDir>/src/__mocks__/Adapter.js",
        "testRegex": "(\\.(test|spec))\\.(ts|tsx|js)$",
        "testPathIgnorePatterns": [
            "\\.snap$",
            "<rootDir>/node_modules/",
            "<rootDir>/lib/"
        ],
        "moduleNameMapper": {
            "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/src/__mocks__/fileMock.js"
        },
        "cacheDirectory": ".jest/cache"
    },

рдФрд░ .babelrc -

{
    "presets": ["react-native"]
}

рдореИрдВрдиреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд▓рдЧрднрдЧ рд╕рднреА рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдиреЗ рднреА рдореЗрд░реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдорджрдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ред

@ omkarjoshi-cc рдЙрд╕ рд╕рдордп рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХрдорд╛рддреНрд░ рдЪреАрдЬ рдереА рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рд╡рд╣ рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рдирд╛ рдерд╛ рдЬреЛ рддреНрд░реБрдЯрд┐ рдХреЛ рдирд┐рдХрд╛рд▓ рд░рд╣рд╛ рдерд╛, рдЬреЛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдерд╛:

"transformIgnorePatterns": [
      "node_modules/(?!react-native-gifted-chat)/"
]

@rochapablo рд╣рд╛рдБред рдореИрдВ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рдЪреАрдЬ рд╣реИ рдЬреЛ рдЧрд╛рдпрдм рд╣реЛ рд╕рдХрддреА рд╣реИ? рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ

рдореИрдВ рдмреЗрдмреЗрд▓ 7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА "transformIgnorePatterns" рдХреЗ рд╕рд╛рде рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ рдерд╛ - рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА: /

рдореЗрд░реЗ рдкрд╛рд╕ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдореВрд▓ es6 рд╡рд░реНрдЧ рд╣реИрдВ, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рд╕реНрд░реЛрдд рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ "es5 рдХреНрд▓рд╛рд╕реЗрд╕" рдХреЛ рдмреИрдмреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реНрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рджреЗрд╢реА рдХреНрд▓рд╛рд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рдЬреЗрд╕реНрдЯ рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рдПрд░рд░ рдорд┐рд▓рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ "рдмреЗрдмреЗрд▓/рдкреНрд░реАрд╕реЗрдЯ-рдПрдирд╡реА" рдХреЛрдб рдХреЛ рдЬреЗрд╕реНрдЯ (рд▓рдХреНрд╖реНрдп рдиреЛрдб) рдореЗрдВ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓рдХреНрд╖реНрдпреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ .babelrc рдореЗрдВ 'рд╡рд░реНрддрдорд╛рди-рдПрдирд╡реА' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдИрдПрд╕ 5 рдХреЛ рдЬреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП?

рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ рдмреЗрдмреЗрд▓-рдЬреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛, рд╡реЗрдмрдкреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдирд╛ (рдЬреЛ рдмреИрдмреЗрд▓-рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрд┐рди рдирд┐рдпрдореЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓реЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ), рдлрд┐рд░ рдЬреЗрд╕реНрдЯ рдЪрд▓рд╛рдПрдВ -> рдореИрдВ webpack -w рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ

рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ

"transformIgnorePatterns": [
      "node_modules/(?!react-native-gifted-chat|@expo/react-native-action-sheet)"
]

рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред @rochapablo . рдХреЛ рдзрдиреНрдпрд╡рд╛рдж

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдореЗрд░рд╛ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, import рдЖрджрд┐ рдХреЗ рд╕рд╛рде ES6 рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВ рдЕрдкрдиреА рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓/рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдкреГрд╖реНрда рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ:
https://babeljs.io/docs/plugins/transform-es2015-modules-commonjs/

рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, babel-jest рдмрдЬрд╛рдп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ transformIgnorePatterns рд╕рдореНрдорд╛рди рдХрд░реЗрдВ)

"transform": {
      "^.+\\.(js|jsx|ts|tsx)$": "ts-jest-babel-7"
    }

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдпрд╣рд╛рдВ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд░реЗрд╢рд╛рдиреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рдмреЗрдмреЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реБрдИ рдереАред рдЕрд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдореЗрд░реЗ .babelrc рдореЗрдВ "ignore": ["**/*.test.js"] рдерд╛ред

рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдирджреЗрдЦрд╛ рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рдирд╛ рдерд╛, рдЕрд░реНрдерд╛рдд:

"env": {
    "production": {
      "ignore": [
        "**/*.test.js"
      ]
    }
  }

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдкрд░реАрдХреНрд╖рдг env рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрдирджреЗрдЦрд╛ рдкреИрдЯрд░реНрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдмрд╣реБрдд рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рд╣реИ

  1. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмреЗрдм-рдЬреЗрд╕реНрдЯ рдХреЗ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ *
  2. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд░реАрд╕реЗрдЯ рдХреЗ рд╕рд╛рде .babelrc рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ (рдкрд╣рд▓реЗ рд╕реНрдерд╛рдкрд┐рдд)
  3. рдпрджрд┐ рдЗрд╕рдХреА рдЕрднреА рднреА "рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЯреЛрдХрди" рдХреА рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХреА рдЧрдИ рд╣реИ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рддреАрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрдЧрдард┐рдд рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдпрд╣ рдмреИрдмрд▓ рдкреНрд▓рдЧрдЗрди рдЖрдкрдХреЛ "рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо-рдХреНрд▓рд╛рд╕-рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ" рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рдЙрдиреНрд╣реЗрдВ рдЖрдкрдХреЗ рдмреИрдмреЗрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдЧрд╛ред

рдпрд╣рд╛рдБ рдореЗрд░реА рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИрдВред

.рдмреЗрдмреЗрд▓рдЖрд░рд╕реА

{
  "plugins": [
    "transform-es2015-modules-commonjs",
    "transform-class-properties"
  ]}

рдПрдВрдЬрд╛рдЗрдо рдХреЗ рд▓рд┐рдП (setupTests.js)

import { configure } from "enzyme";
import Adapter from "enzyme-adapter-react-15";
configure({ adapter: new Adapter() });

рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди

 "dependencies": {
    "babel-cli": "^6.26.0",
    "babel-plugin-transform-class-properties": "^6.24.1",
    "eslint": "^4.19.1",
    "react": "^15.4.2",
    "react-dom": "^15.4.2",
    "react-test-renderer": "^15.6.2",
     "babel-jest": "^22.4.3",
    "babel-preset-env": "^1.6.1",
    "babel-preset-react": "^6.24.1",
    "enzyme": "^3.3.0",
    "enzyme-adapter-react-15": "^1.0.5",
    "gh-pages": "^0.12.0",
    "jest": "^22.4.3",
    "react-addons-test-utils": "^15.4.2",
    "regenerator-runtime": "^0.11.1"
  },
"jest": {
    "globals": {
      "NODE_ENV": "test"
    },
    "verbose": true,
    "moduleDirectories": ["node_modules", "src"],
    "transform": {
      "^.+\\.jsx?$": "babel-jest"
    },
    "moduleFileExtensions": ["js", "jsx"],
    "setupTestFrameworkScriptFile": "<rootDir>/src/setupTests.js"
  }

yarn add --dev babel-jest babel-core regenerator-runtime рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рд╣реЛ рдЧрдпрд╛

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╡рд┐рдВрдбреЛрдЬрд╝ рдФрд░ рдЗрд╕рдХреА рдмреЗрд╡рдХреВрдл рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереА, рд╢рд╛рдпрдж env рдЪрд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдЧрд┐рдЯ рдмреИрд╢ рд╕реЗ рдПрдХ рдЙрдиреНрдирдд cmd.exe рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ jest рдХреЛ script (рдирд╛рдо рдмрджрд▓рдХрд░ test:jest рд░реВрдк рдореЗрдВ test ) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореЗрд░реЗ package.json ред рд╣рд╛рд▓рд╛рдВрдХрд┐, npm run test рдЪрд▓рд╛рддреЗ рд╕рдордп, рдореБрдЭреЗ SyntaxError: Unexpected token import :

root<strong i="14">@browserify</strong>:/var/machine-learning/src# npm run test

> [email protected] test /var/machine-learning/src
> jest --config /var/machine-learning/test/jest/jest.config.js

 FAIL  ../test/jest/__tests__/layout/analysis.test.jsx
  тЧП Test suite failed to run

    /var/machine-learning/test/jest/__tests__/layout/analysis.test.jsx:6
    import React from 'react';
    ^^^^^^

    SyntaxError: Unexpected token import

      at ScriptTransformer._transformAndBuildScript (../../src/node_modules/jest-runtime/build/script_transformer.js:316:17)

 FAIL  ../test/jest/__tests__/layout/page.test.jsx
  тЧП Test suite failed to run

    /var/machine-learning/test/jest/__tests__/layout/page.test.jsx:6
    import React from 'react';
    ^^^^^^

    SyntaxError: Unexpected token import

      at ScriptTransformer._transformAndBuildScript (../../src/node_modules/jest-runtime/build/script_transformer.js:316:17)

 FAIL  ../test/jest/__tests__/content/register.test.jsx
  тЧП Test suite failed to run

    /var/machine-learning/test/jest/__tests__/content/register.test.jsx:6
    import React from 'react';
    ^^^^^^

    SyntaxError: Unexpected token import

      at ScriptTransformer._transformAndBuildScript (../../src/node_modules/jest-runtime/build/script_transformer.js:316:17)

 FAIL  ../test/jest/__tests__/content/login.test.jsx
  тЧП Test suite failed to run

    /var/machine-learning/test/jest/__tests__/content/login.test.jsx:6
    import React from 'react';
    ^^^^^^

    SyntaxError: Unexpected token import

      at ScriptTransformer._transformAndBuildScript (../../src/node_modules/jest-runtime/build/script_transformer.js:316:17)

----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |        0 |        0 |        0 |        0 |                   |
----------|----------|----------|----------|----------|-------------------|
Test Suites: 4 failed, 4 total
Tests:       0 total
Snapshots:   0 total
Time:        3.782s
Ran all test suites.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] test: `jest --config /var/machine-learning/test/jest/jest.config.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] test script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-05-08T01_50_42_754Z-debug.log

рдореИрдВрдиреЗ рдЗрд╕реА jest.config.js рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

module.exports = {
  'verbose': true,
  'collectCoverage': true,
  'coverageDirectory': '/var/machine-learning',
  'moduleDirectories': ['/var/machine-learning/src/node_modules'],
  'transformIgnorePatterns': [
    '/var/machine-learning/src/node_modules'
  ]
}

рдореБрдЭреЗ react-native , рдФрд░ transformIgnorePatterns рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реА рдЪреАрдЬрд╝реЗрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдФрд░ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ред рдпрд╣ рдХреИрд╕реА рдорд╛рдпрд╛рд╡реА рдмрдЧ рд╣реИред рдХреНрдпрд╛ рдореБрдЭреЗ .babelrc рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдореЗрд░реЗ package.json рдПрдХ jest рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░рд╛ рдордЬрд╝рд╛рдХ script рдХреИрд╕реЗ рдмреЗрдмреЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ? рдореИрдВрдиреЗ рдЕрдкрдиреА package.json рд╡рд╛рд▓реА рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ .babelrc рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ рд╣реИ:

{
  "env": {
    "test": {
      "presets": ["env", "stage-2", "react"]
    }
  }
}

рдиреЛрдЯ: рдпрджрд┐ рдХреЛрдИ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдореЗрд░реЗ рдореВрд▓ рдореБрджреНрджреЗ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЗрд╡рдХреВрдл рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдорд┐рд▓реА рд╣реИрдВ:

  • рдЬреЗрд╕реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмреЗрдмреЗрд▓ 6 рдЪрд▓рд╛рддрд╛ рд╣реИред рдмреЗрдмреЗрд▓ 6 .babelrc.js рдлрд╝рд╛рдЗрд▓ рдХреА рддрд▓рд╛рд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ .babelrc рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ JSON рдХреЗ рдмрдЬрд╛рдп JS рдХреЙрдиреНрдлрд┐рдЧрд░ рд╣реИ, рддреЛ рдпрд╣ рдХреЙрдиреНрдлрд┐рдЧ рдХреЛ рдирд╣реАрдВ рдкрдврд╝реЗрдЧрд╛ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рд╕реА рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореЗрд░реЗ рд▓рд┐рдП unexpected token: import рд╣реЛ рдЧрдпрд╛ред
  • babel-7-jest рдкреБрд░рд╛рдиреЗ рдмреИрдмреЗрд▓ 7 рдХреЛрд░ рдЗрдВрдЬрди рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирдП рдкреНрд░рд╕реНрддрд╛рд╡ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рддреЛрдбрд╝рддрд╛ рд╣реИред
  • рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ npm i -D [email protected] рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рдХрд░ рджреЗрддрд╛ рд╣реИ ред рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдмреЗрдмрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ env.test рднреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рди рд╣реА рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЬреЗрд╕реНрдЯ babel-core (рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ @babel/core рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ), рдЕрдиреНрдпрдерд╛ рдпрд╣ рдмреИрдмреЗрд▓ 6 рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдирд╡реАрдирддрдо рдмреЗрдмреЗрд▓-рдХреЛрд░ (рдмреНрд░рд┐рдЬ рд╕рдВрд╕реНрдХрд░рдг) рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ ES6 рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж рдХрд╛рд╕реНрд╡реАрд╡! рдореЗрд░реЗ .babelrc.js рдХреЛ .babelrc рдФрд░ npm i -D [email protected] рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рдЕрдм рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг babel-jest рд╕рд╛рде рдЪрд▓рддреЗ рд╣реИрдВ

рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ .js рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдмреИрдмреЗрд▓ рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 7 рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдмреИрдмреЗрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИ ред

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореБрдЭреЗ рдореЗрд░рд╛ рдЬреЗрд╕реНрдЯ + рдПрдВрдЬрд╛рдЗрдо рдкрд░реАрдХреНрд╖рдг рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдмреЗрдЭрд┐рдЭрдХ рдкреНрд░рд╣рд╛рд░ рдХрд░реЗрдВред рд╕рд╛рде рд╣реА, рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЙрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдлреНрд░рдВрдЯрдПрдВрдб рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ?

antd рдФрд░ rc-calendar рдЖрджрд┐ рдХреЗ рдХрд╛рд░рдг рднреА рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ transformIgnorePatterns рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдерд╛

transformIgnorePatterns: [ 'node_modules/?!(antd|rc-.+)/' ],

рд╢рд╛рдпрдж moduleDirectories рдиреЗ рднреА рдорджрдж рдХреА:

moduleDirectories: ['node_modules'],

рдореИрдВрдиреЗ рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдмреЗрдмреЗрд▓ 7 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЕрдм рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред

рдЗрди рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ transformIgnorePatterns рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЕрдм рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдм рдмреИрдмреЗрд▓ рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдЖрдкрдХреЗ рдмреЗрдмреЗрд▓рд░ рдХреЗ test рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдкрд░ рдПрдХ рдиреЛрдЯ рд╣реИред

@ kasvtv @ willb335 рдореИрдВ

рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди

  "babel": {
    "presets": [
      "./.babelrc.js"
    ]
  },

рдореИрдВ @ рд╕рд╛рдордЧреНрд░реА/рдЖрдзрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдХреЛрдИ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП package.json & .babelrc рдлрд╝рд╛рдЗрд▓ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдлреАрдбрдмреИрдХ рд╕реЗ рдКрдкрд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдорд┐рд╢реНрд░рд┐рдд рд╣реВрдВ ...

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди .babelrc рдлрд╝рд╛рдЗрд▓ рдкрд░ "env" рдкреНрд░реАрд╕реЗрдЯ рдЬреЛрдбрд╝ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрд╕ рддрд░рд╣ рдирд┐рдХрд▓рд╛
{
"рдкреНрд░реАрд╕реЗрдЯ": ["env", "es2016", "stage-0", "react"]
}

рдЗрд╕ рд▓рд┐рдВрдХ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ
https://jestjs.io/docs/hi/webpack.html

@negarineh рдЖрдкрдХрд╛ рд▓рд┐рдВрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛

@haywirez рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП transformIgnorePatterns рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрд░рд╛ . рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ

SyntaxError: Unexpected token import

рдПрдХ рдореЗрдВ рддреНрд░реБрдЯрд┐

TypeError: Cannot read property 'DocumentDir' of undefined

рддреНрд░реБрдЯрд┐ рдпрд╛рдиреА рдкреИрдХреЗрдЬ (rn-fetch-blob) рдЕрдм рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд░реНрдл transformIgnorePatterns: [], рдХреЛ рдореЗрд░реЗ jest.config.js рдЬреЛрдбрд╝рдиреЗ рд╕реЗ SyntaxError TypeError рдХрд╛ рдкреАрдЫрд╛ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

@schhumannd рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдЧрд▓рддреА рдХреА рд╣реИ, рд▓рд┐рдВрдХ рдЕрдм рдЖрдкрдХреЛ рдкреГрд╖реНрда рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ "jest.config.js" рдЙрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд▓рд┐рдВрдХ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рддреНрд░реБрдЯрд┐ .css рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬреИрд╕реЗ рд▓рд┐рдВрдХ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣ рдПрдХ рдирдХрд▓реА рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдирд╛ рдпрд╛ рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде "identity-obj-proxy" рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

npm install --save-dev identity-obj-proxy

jest.config.js (рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП):

{ "jest": { "moduleNameMapper": { "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js", "\\.(css|less)$": "identity-obj-proxy" } } }

рд╕рд╛рде рд╣реА, рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдореЗрд░реА .babelrc рдлрд╛рдЗрд▓ рд╣реИ (test.config.js рднреА рд░реВрдЯ рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП):

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдмреЗрдмреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдмреЗрдмреЗрд▓-рдЬреЗрд╕реНрдЯ" рдФрд░ "рд░реАрдЬреЗрдирд░реЗрдЯрд░-рд░рдирдЯрд╛рдЗрдо" рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

npm --dev babel-jest babel-core regenerator-runtime

рдлрд┐рд░ рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ .babelrc рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

{ "presets": ["env", "react"], "plugins": ["transform-class-properties"], "env": { "production": { "plugins": ["transform-es2015-modules-commonjs"] }, "test": { "presets": ["env", "react"], "plugins": ["transform-export-extensions"], "only": [ "./**/*.js", "node_modules/jest-runtime" ] } } }

рдЙрдореНрдореАрдж рд╣реИ рдпреЗ рдорджрдж рдХрд░реЗрдЧрд╛ред
https://jestjs.io/docs/hi/webpack.html

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд .babelrc рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

{
  "presets": ["env", "react"],
  "env": {
    "test": {
      "plugins": ["transform-class-properties"]
    }
  }
}

рдФрд░ рдлрд┐рд░ NODE_ENV=test jest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ

рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдореЗрд░реА рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдереАред рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп require рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

рд▓реЛрдЧред рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ aa babelrc рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ... рдХреЗрд╡рд▓ babel.config.js. рдХреГрдкрдпрд╛, рдЖрдк babel.config.js рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ? рдзрдиреНрдпрд╡рд╛рдж

рдЙрдкрд░реЛрдХреНрдд рдЪрд░реНрдЪрд╛ рд╕реЗ babel рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдиреНрдп рдЦреЛрдЬ рд╕реЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдк (рдЬреИрд╕реЗ esm рд╡рд┐рдХрд▓реНрдк) рдХреЗ рд▓рд┐рдП рдХрдИ рдЪреАрдЬреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА - рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрдореНрдкреЛрд░реНрдЯ рдХреАрд╡рд░реНрдб рдЬреЗрд╕реНрдЯ рд╕реЗ рдПрд░рд░ рджреЗрддрд╛ рд░рд╣рд╛ред рдпрд╣ рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ es6 рдЖрдпрд╛рдд рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЗрддрдирд╛ рдХрдард┐рди рд╣реИред

рдЕрдВрдд рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣реА рдХрд╛рдо рдХрд┐рдпрд╛: ts-jest

рдЕрдм, рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХрд┐рд╕реА рднреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдлрд┐рд░ рднреА ts-jest рдХрд╛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ (рдЪреВрдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдФрд░ рдЕрдиреНрдп рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ)ред рдпрд╣ рд╕рд┐рд░реНрдл рдордЬрд╛рдХ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдареАрдХ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

рдЗрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛:
npm i -D jest typescript ts-jest @types/jest
jest.config.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ:
transform: { "\\.js$": "ts-jest", transformIgnorePatterns: [], },
рдЬреЗрд╕реНрдЯ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ js рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде tsconfig.json рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ:
{ "compilerOptions": { "allowJs": true, "module": "commonjs", "noImplicitAny": true, "removeComments": true, "preserveConstEnums": true, "sourceMap": true } }
рд╕рднреА babel рд╕рдВрдмрдВрдзрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред npm рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдиреАрдЪреЗ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
"scripts": { "test": "jest --runInBand --detectOpenHandles --no-cache --config ./jest.config.js" }
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдирдВрдЧреЗ рд╣рдбреНрдбрд┐рдпреЛрдВ рдХрд╛ рд░реЗрдкреЛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЬреЗрдПрд╕ рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рд╕реЗрдЯрдЕрдк рд╣реИ?

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдирдВрдЧреЗ рд╣рдбреНрдбрд┐рдпреЛрдВ рдХрд╛ рд░реЗрдкреЛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЬреЗрдПрд╕ рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рд╕реЗрдЯрдЕрдк рд╣реИ?

https://github.com/kasvtv/react-starter

рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджреЗ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рдпрд╛ рдЬреЛ рдореВрд▓ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Dynamic_Imports рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдлрд╝рдВрдХреНрд╢рди-рдЬреИрд╕реЗ рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╕рдорд╛рдкреНрдд рд╣реБрдИ https://github.com/airbnb/babel-plugin-dynamic-import-node рдкрд░ рдЙрдкрд▓рдмреНрдз рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдмреЗрдмреЗрд▓ рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рддрджрдиреБрд╕рд╛рд░ .babelrc рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

{
    ...
    "env": {
        "test": {
            "plugins": ["dynamic-import-node"]
        }
    ...
}

рдореИрдВ рд╕рд┐рд░реНрдл рд╡рд┐рдХрд▓реНрдк рд╣рдЯрд╛рддрд╛ рд╣реВрдВ: { рдореЙрдбреНрдпреВрд▓: рдЭреВрдард╛ }, рдФрд░ рдлрд┐рд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

"presets": [
    ["@babel/env", {module: false} ],  
    "@babel/preset-react",
    "@babel/preset-typescript"
  ]

transformIgnorePatterns: [] рдХреЛ рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдФрд░ transform-es2015-modules-commonjs рдХреЛ babelrc рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред
рдордЬрд╝рд╛рдХ: ^23.1.0,
рдмреЗрдмрд▓: 6.26.3

@ngmgit рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕рднреА рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдмрд╣реБрдд рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ ...

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ,
.babelrc рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрд╕реА рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ .babelrc рд╕реЗ babel.config.js рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХреАред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реА!

рдпрд╣рд╛рдВ рдЬреЛ рдХреБрдЫ рднреА рд╣реИ, рдЙрд╕рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреЗрд╕рдмреБрдХ рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд░реАрдХреНрд╖рдг рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рд╕реНрддрд░ рд╣реИ, рдореИрдВ 8+ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ рдФрд░ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рджрд┐рди рдХреЗ 5 рдШрдВрдЯреЗ рдмрд┐рдирд╛ рд╕рдлрд▓рддрд╛ рдХреЗ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдореБрджреНрджреЛрдВ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдмрд┐рддрд╛рдПред рдвреЗрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдкрд░ред

рдореИрдВ рдЬреЗрд╕реНрдЯ + рд░рд┐рдПрдХреНрдЯ-рдЯреЗрд╕реНрдЯрд┐рдВрдЧ-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрд╕реНрдЯ рд╣рд░ рдмрд╛рд░ рдореБрдЭреЗ рдПрдХ рдирдИ рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐ рдЪрд┐рд▓реНрд▓рд╛ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓рдЧрдЗрди рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рджреЗрддрд╛ рд╣реИред рдмреЗрдмреЗрд▓ рдХреЛ рд╕рдм рдХреБрдЫ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд╛рд░ рдорд╛рди рд▓реА рд╣реИ, рдореИрдВ рдЕрдм рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рдмрд┐рддрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рд╢рд╛рдпрдж рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдЬреЛрдбрд╝рдирд╛ рд░рджреНрдж рдХрд░ рджреВрдВрдЧрд╛ред

рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдпрд╣ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЬреЗрд╕реНрдЯ + рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдкрд░реАрдХреНрд╖рдг-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

рдХрдИ рдШрдВрдЯреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рдж рдХрдИ SO рдЙрддреНрддрд░ рдФрд░ github рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде, @cpojer рдХреЗ рдЙрддреНрддрд░ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛! ЁЯЩП

рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде рдирд╡реАрдирддрдо рдФрд░ рдорд╣рд╛рдирддрдо рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬрд┐рд╕рдиреЗ рдореЗрд░реА рдорджрдж рдХреА:

babel.config.js

module.exports = {
  "env": {
    "production": {
-      "plugins": ["transform-es2015-modules-commonjs"]
# new kid on the block
+      "plugins": ["@babel/plugin-transform-modules-commonjs"]
    }
  }
}

jest.config.js

module.exports = {
  // if you're also using typescript
  preset: "ts-jest",
  testEnvironment: "node",
  verbose: true,
  // registers babel.config.js with jest
  transform: {
    "^.+\\.js$": "babel-jest",
  },
  // explicitly include any node libs using ESM modules
  transformIgnorePatterns: ["node_modules/?!(<ESM module here>|<another here>|<etc...>)"],
}

рдирд┐рд░реНрднрд░рддрд╛рдПрдБ:

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рддрдм рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЬреЗрд╕реНрдЯ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реЛ...

рдпрджрд┐ рдЖрдк react-native рдпрд╛ jest-expo рдкреНрд░реАрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ .js рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ transform рдХреЛ рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдореИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВрдиреЗ https://jestjs.io/docs/en/configuration.html#transform -objectstring-pathtotransformer--pathtotransformer-object рд╕реЗ рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред

transform: { '^.+\\.[jt]sx?$': 'babel-jest' }

рдкреАрдПрдирдкреАрдПрдо рд╕рдорд░реНрдерди

рдореИрдВ рдпрд╣рд╛рдВ pnpm рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЛрдЯ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ ....

рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг pnpm рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ pnpm рдкрде рднрд┐рдиреНрди рд╣реИрдВред рдЙрдкрд░реЛрдХреНрдд рд░реЗрдЧреЗрдХреНрд╕ рдХреЗрд╡рд▓ node_modules dirs рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

/xxx/node_modules/.pnpm/[email protected][email protected][email protected]/node_modules/antd/es/input/String

рджреЗрдЦреЗрдВ: https://regexr.com/5cs2h

"transformIgnorePatterns": [
  "node_modules/(?!(react-native|my-project|react-native-button)/)"
]

https://jestjs.io/docs/en/tutorial-react-native#transformignorepatterns -customization

рдареАрдХ рдХрд░

.* рдЬреЛрдбрд╝рдХрд░ рдЕрдВрддрд┐рдо рдЕрд╡рд╕рд░ рдХреЗ рд▓рд┐рдП рдирдХрд╛рд░рд╛рддреНрдордХ рд▓реБрдХрд╣реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

node_modules/(?!(.*antd/es)/)
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

stephenlautier picture stephenlautier  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kgowru picture kgowru  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

emmby picture emmby  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

GrigoryPtashko picture GrigoryPtashko  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mmcgahan picture mmcgahan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ