Конфиг слияния в babelv7 - PullRequest
0 голосов
/ 19 февраля 2020

Я только что обновился до babelv7, раньше у меня была среда по умолчанию, в которой были некоторые псевдонимы, и тестовая среда, в которой были некоторые псевдонимы, теперь в тестовой среде babel используется для объединения обеих конфигураций, в babelv7 эта функциональность была удалена, как для достижения этой функциональности слияния без повторения псевдонимов 2 раза.

Это мой babel.config. js

module.exports = {
  presets: ['custom-preset'],
  env: {
    test: {
      presets: ['@babel/preset-env', '@babel/preset-react'],
      plugins: [
        'transform-class-properties',
        [
          'module-resolver',
          {
            root: ['./app'],
            alias: {
              'test-util': './node_modules/test-util/lib',
            },
          },
        ],
      ],
    },
  },
  ignore: ['node_modules'],
  plugins: [
    [
      'transform-imports',
      {
        lodash: {
          transform: 'lodash/${member}',
          preventFullImport: true,
        },
      },
    ],
    [
      'module-resolver',
      {
        root: ['./app'],
        alias: {
          'module1': './src/components/module1',
        },
      },
    ],
  ],
};

1 Ответ

1 голос
/ 20 февраля 2020

Основным изменением слияния в Babel 7 является то, что вещи фактически объединяются more , поэтому вместо этого конфига создается два экземпляра module-resolver с двумя разными конфигами, один в test будет перезаписывать конфигурацию для модуля на верхнем уровне.

Чтобы сообщить Babel, что они должны быть двумя независимыми плагинами, необходимо указать хотя бы один из это уникальное имя, которое представляет собой строку, переданную в качестве третьей записи в массиве элементов плагина, например,

  plugins: [
    'transform-class-properties',
    [
      'module-resolver',
      {
        root: ['./app'],
        alias: {
          'test-util': './node_modules/test-util/lib',
        },
      },
      'testing-resolver' // A name for the plugin so it is unique and doesn't overwrite
    ],
  ],
...