Выполнение тестов мокко в Lerna Monorepo не компилирует импорт - PullRequest
0 голосов
/ 01 июля 2019

Отчет об ошибке

Текущее поведение

~/######/######/packages/core
$ yarn test

/Users/######/######/######/packages/primitives/dist/primitives.js:1
import styled, { css } from 'styled-components';
       ^^^^^^

SyntaxError: Unexpected identifier

У нас есть монорепо, которое имеет один пакет, скомпилированный с Babel 7 и Rollup to esm.Мы запускаем тесты Mocha, используя файл setup.js, который запускает регистрацию babel до запуска тестов.По какой-то причине кажется, что другой пакет (примитивы) не переносится, в то время как весь другой код и node_modules компилируются просто отлично.

Входной код

require('@babel/register')({
  presets: ['@babel/preset-env', '@babel/preset-flow', '@babel/preset-react'],
  plugins: [
    '@babel/plugin-proposal-export-default-from',
    '@babel/plugin-proposal-logical-assignment-operators',
    [
      '@babel/plugin-proposal-optional-chaining',
      {
        loose: false,
      },
    ],
    [
      '@babel/plugin-proposal-pipeline-operator',
      {
        proposal: 'minimal',
      },
    ],
    [
      '@babel/plugin-proposal-nullish-coalescing-operator',
      {
        loose: false,
      },
    ],
    '@babel/plugin-proposal-do-expressions',
    [
      '@babel/plugin-proposal-decorators',
      {
        legacy: true,
      },
    ],
    '@babel/plugin-proposal-function-sent',
    '@babel/plugin-proposal-export-namespace-from',
    '@babel/plugin-proposal-numeric-separator',
    '@babel/plugin-proposal-throw-expressions',
    '@babel/plugin-syntax-dynamic-import',
    '@babel/plugin-syntax-import-meta',
    [
      '@babel/plugin-proposal-class-properties',
      {
        loose: false,
      },
    ],
    '@babel/plugin-proposal-json-strings',
    '@babel/plugin-transform-modules-commonjs',
    '@babel/plugin-transform-runtime',
  ],
});

const { configure } = require('enzyme');
const mock = require('mock-require');
const { JSDOM } = require('jsdom');
const Adapter = require('enzyme-adapter-react-16');

require('ignore-styles').default(['.md', '.css', '.scss', '.png']);

configure({ adapter: new Adapter() });
const jsdom = new JSDOM('<!doctype html><html><body></body></html>');

function copyProps(src, target) {
  const props = Object.getOwnPropertyNames(src)
    .filter((prop) => typeof target[prop] === 'undefined')
    .map((prop) => Object.getOwnPropertyDescriptor(src, prop));
  Object.defineProperties(target, props);
}

global.window = jsdom.window;
global.self = {
  addEventListener: () => {},
  postMessage: () => {},
};
global.document = jsdom.window.document;
global.navigator = {
  userAgent: 'node.js',
};
global.CustomEvent = jsdom.window.CustomEvent;

/* global window */
copyProps(window, global);

mock('Utilities/IconClasses', '../utils/IconClasses');
mock('Utilities/Mobile', '../utils/Mobile');
mock('Utilities/Deprecated', '../utils/Deprecated');
mock('Utilities/ISOString', '../utils/ISOString');
mock('Utilities/position', '../utils/position');
mock('Utilities/Validate', '../utils/Validate');
mock('Internal/IconWrapper', '../internal/IconWrapper');

Ожидаемое поведение / код Я ожидаю, что все модули будут скомпилированы до запуска тестов mocha.

Настройка Babel (.babelrc, package.json,команда cli)

{
  presets: ['@babel/preset-env', '@babel/preset-flow', '@babel/preset-react'],
  plugins: [
    '@babel/plugin-proposal-export-default-from',
    '@babel/plugin-proposal-logical-assignment-operators',
    [
      '@babel/plugin-proposal-optional-chaining',
      {
        loose: false,
      },
    ],
    [
      '@babel/plugin-proposal-pipeline-operator',
      {
        proposal: 'minimal',
      },
    ],
    [
      '@babel/plugin-proposal-nullish-coalescing-operator',
      {
        loose: false,
      },
    ],
    '@babel/plugin-proposal-do-expressions',
    [
      '@babel/plugin-proposal-decorators',
      {
        legacy: true,
      },
    ],
    '@babel/plugin-proposal-function-sent',
    '@babel/plugin-proposal-export-namespace-from',
    '@babel/plugin-proposal-numeric-separator',
    '@babel/plugin-proposal-throw-expressions',
    '@babel/plugin-syntax-dynamic-import',
    '@babel/plugin-syntax-import-meta',
    [
      '@babel/plugin-proposal-class-properties',
      {
        loose: false,
      },
    ],
    '@babel/plugin-proposal-json-strings',
    '@babel/plugin-transform-modules-commonjs',
    '@babel/plugin-transform-runtime',
  ],
}

Среда - Версия (и) Babel: v7.4.5 - Версия узла / npm: v10.16.0 - ОС: OSX 10.14.5 - Monorepo: Lerna - Как вы используете Babel: регистрация

...