如何仅使用Babel 7转换node_modules文件夹?

时间:2019-07-31 09:46:31

标签: reactjs ecmascript-6 mocha babel

尝试使用Mocha单元测试reactjs应用程序,但从node_modules文件夹中使用的es6功能(导入/导出)中获取错误。有问题的应用程序使用babel进行了编译,但是由于react组件之一正在使用node_modules中的模块,因此其抛出错误Syntax Error:Unexpected token export。我知道babel默认情况下会忽略node_modules文件夹,但不确定如何处理。任何帮助,将不胜感激。谢谢。

测试命令:-

  "test": "SET NODE_ENV=test&& mocha --require @babel/register --require ignore-styles -r jsdom-global/register \"./src/**/*.test.js\"",

babel.config.js:-

module.exports = function (api) {
  const presets = ["react-app"];
  const plugins = [
      "@babel/plugin-transform-modules-commonjs", 
      "inline-react-svg"
  ];
  const ignore = [/node_modules/]
  api.cache(false); 
  return {
      presets, 
      plugins,
      ignore
  }
};

2 个答案:

答案 0 :(得分:1)

让它正常工作!。由于我使用的是内部配置为使用Jest的 react-app-rewired ,因此不得不从 Mocha 切换到 Jest config-override.js中需要进行少量更改。使用"transformIgnorePatterns": ["node_modules/(?!MODULES_TO_BE_TRANSPILED)"]添加了笑话配置。希望对别人有帮助。

答案 1 :(得分:0)

尝试此命令,您需要使用--ignored选项在命令行中传递忽略的目录。

./node_modules/.bin/babel . -d ~/app_compressed/ --ignore node_modules,test,assets,stuff,views,public,test,spec,logs,lib/jasmine_examples,db,routes/api/drafts,**/drafts

此外,请确保使用babel.config.js文件而不是.babelrc文件。 因此配置文件将如下所示。

module.exports = function (api) {
    api.cache(true);
    return {
        babelrcRoots: [
            '.',
            './modules/*'
        ],
    ignore: [/node_modules/],
    presets: ["@babel/preset-env"]
    };
}