Skip to content

Latest commit

 

History

History
77 lines (70 loc) · 1.74 KB

babelConfig.md

File metadata and controls

77 lines (70 loc) · 1.74 KB

babel-config

配置babel, 需要进行require操作

  • babelConfig.js (本地) : 需要特殊处理,api && api.cache(true);, 进行 require 操作
function resolve(moduleName) {
  return require.resolve(moduleName);
}

module.exports = function(modules) {
  const plugins = [
    [
      resolve('@babel/plugin-transform-typescript'),
      {
        isTSX: true,
      },
    ],
    resolve('babel-plugin-inline-import-data-uri'),
    resolve('@babel/plugin-transform-member-expression-literals'),
    resolve('@babel/plugin-transform-object-assign'),
    resolve('@babel/plugin-transform-property-literals'),
    [
      resolve('@babel/plugin-transform-runtime'),
      {
        helpers: false,
      },
    ],
    resolve('@babel/plugin-transform-spread'),
    resolve('@babel/plugin-transform-template-literals'),
    resolve('@babel/plugin-proposal-export-default-from'),
    resolve('@babel/plugin-proposal-export-namespace-from'),
    resolve('@babel/plugin-proposal-object-rest-spread'),
    [
      resolve('@babel/plugin-proposal-decorators'),
      {
        legacy: true,
      },
    ],
    resolve('@babel/plugin-proposal-class-properties'),
  ];
  return {
    presets: [
      resolve('@babel/preset-react'),
      [
        resolve('@babel/preset-env'),
        {
          modules,
          targets: {
            browsers: [
              'last 2 versions',
              'Firefox ESR',
              '> 1%',
              'ie >= 9',
              'iOS >= 8',
              'Android >= 4',
            ],
          },
        },
      ],
    ],
    plugins,
  };
};

// webpack

const babelConfig = require('babelConfig.js')();

{
  test: /\.jsx?$/,
  exclude: /node_modules/,
  loader: resolve('babel-loader'),
  options: babelConfig,
}