Конфигурация Jest 'проекты' не читает .babelrc и webpack.config.json в подпапке - PullRequest
0 голосов
/ 24 мая 2018

Мне нужна помощь в настройке jest с babel в моно-репо,

мой макет проекта выглядит так:

src/some/path/packages
                      /jest.config.js
                      /a/src/jest.config.js
                      /a/src/.babelrc
                      /a/src/webpack.config.js
                      /b/src/jest.config.js
                      /b/src/webpack.config.js

и мой корневой jest.config.js:

module.exports = {
    projects: ["./a/src/jest.config.js", "/b/src/jest.config.js"]
};

a / src / jest.config.js:

module.exports = {
    resolver: "jest-webpack-resolver"
};

, как вы можете видеть, я использую решатель webpack, потому что у меня есть псевдонимы в моих файлах webpack.config.js

если я вызываю jest в ./a/src, он работает отлично, но если я вызываю его в пакетах, то

  • Не удается разрешить модули, а
  • Импорт ES6 неработать, и я получаю SyntaxError's (очевидно, что .babelrc не найден)

Я хочу предотвратить необходимость установки babel / jest / webpack в приложениях и не могу понять, как заставить jest использовать правильный .babelrcfile

Я также пытался изменить jest.config.js в пакетах / на этот:

module.exports = {
    projects: [{
        rootDir: "<rootDir>/a/src",
        resolver: "jest-webpack-resolver"
    },
    {
        rootDir: "<rootDir>/b/src",
        resolver: "jest-webpack-resolver"
    }]
};

, но также безрезультатно.

1 Ответ

0 голосов
/ 04 июля 2018

Я столкнулся с точно такой же проблемой.Я потратил некоторое время на то, чтобы обдумать этот вариант, но мне удалось решить его с помощью моей собственной версии babel-jest под названием babel-jest-nested:

https://github.com/lehni/babel-jest-nested

С этим я могууказать мои проекты на корневом уровне в jest.config.js:

module.exports = {
  projects: ['<rootDir>/packages/*']
}

У меня также есть jest.base.config.js на корневом уровне, который будет загружать каждый проект / пакет:

module.exports = {
  transform: {
    '^.+\\.jsx?$': 'babel-jest-nested'
  },
  testMatch: [
    '**/src/**/?(*.)+(test).js'
  ]
}

Тогдав рамках проекта / пакета я просто делаю это снова в файле jest.config.js:

module.exports = {
  ...require('../../jest.base.config.js')
}

и вдруг все работает.Магия.

...