Skip to content

Commit

Permalink
Merge pull request #4782 from reactioncommerce/fix-4781-dancastellon-…
Browse files Browse the repository at this point in the history
…jest-tests-plugins-w-package-json

Fix: Import Babel config from package.json and export in babel.config.js to fix Jest tests in custom plugins that have a package.json
  • Loading branch information
spencern authored Oct 26, 2018
2 parents 289dc70 + dd14373 commit 84fef6b
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
const fs = require("fs");

/**
* @summary Babel 7 doesn't transpile files in sub-directories that have a package.json when Babel is configured
* through package.json or .babelrc. This causes Jest test failures in custom plugins that have a package.json. It
* isn't an issue with non-test files because those are imported through the main Reaction app (see /server/plugins.js
* and client/plugins.js). Babel does transpile these files when it is configured through the new babel.config.js.
* Meteor currently only loads Babel config through .babelrc or package.json. So, in order to support Babel transpiling
* of Jest tests, we load the babel config defined in package.json and export it here.
* See this Github comment: https://github.com/facebook/jest/issues/6053#issuecomment-383632515
*/
module.exports = function (api) {
api.cache(false);

/**
* Meteor only reads the babel config from .babelrc or package.json. So with just babel.config.js,
* the Meteor app fails but the Jest tests pass. With just package.json, the Jest tests in custom plugins
* fail but the app runs.
*/
const file = fs.readFileSync("./package.json");
const packageJSON = JSON.parse(file);

return packageJSON.babel;
};

0 comments on commit 84fef6b

Please sign in to comment.