text: // rollup.config.js
  import commonjs from '@rollup/plugin-commonjs';
  import json from '@rollup/plugin-json';
  import resolve from '@rollup/plugin-node-resolve';
  import typescript from '@rollup/plugin-typescript';
  import license from 'rollup-plugin-license';
  import autoExternal from 'rollup-plugin-auto-external';
  import sass from 'sass';
  import postcss from 'rollup-plugin-postcss';
  import postcssImport from 'postcss-import';
  import autoprefixer from 'autoprefixer';
  
  import {
    name,
    version,
    author,
    main,
    module,
    dependencies
  } from './package.json';
  import path from 'path';
  import svgr from '@svgr/rollup';
  
  const settings = {
    globals: {}
  };
  
  const external = id =>
    new RegExp(
      `^(?:${Object.keys(dependencies)
        .concat([
          'linkify-it',
          'markdown-it',
          'markdown-it-html5-media',
          'mdurl',
          'uc.micro',
          'entities'
        ])
        .map(value =>
          value.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d')
        )
        .join('|')})`
    ).test(id);
  const input = [
    './src/index.tsx',
    './src/components/ColorPicker.tsx', // 默认不加载的需要手动维护列表，否则不会编译
    './src/components/BarCode.tsx',
    './src/components/Markdown.tsx',
    './src/components/Tinymce.tsx',
    './src/components/RichText.tsx',
    './src/components/CityDB.ts'
  ];
  
  export default [
    {
      input: input.concat([
        './scss/themes/antd.scss',
        './scss/themes/ang.scss',
        './scss/themes/cxd.scss',
        './scss/themes/dark.scss',
        './scss/themes/default.scss',
        './scss/helper.scss'
      ]),
  
      output: [
        {
          ...settings,
          dir: path.dirname(main),
          format: 'cjs',
          exports: 'named',
          preserveModulesRoot: './src',
          preserveModules: true // Keep directory structure and files
        }
      ],
      external,
      plugins: getPlugins('cjs')
        .concat(
          ['antd', 'ang', 'cxd', 'dark', 'default'].map(theme =>
            postcss({
              include: `**/${theme}.scss`,
              // process: processSass,
              extract: path.resolve(`lib/themes/${theme}.css`),
              plugins: [postcssImport(), autoprefixer()]
            })
          )
        )
        .concat(
          postcss({
            include: `**/helper.scss`,
            // process: processSass,
            extract: path.resolve(`lib/helper.css`),
            plugins: [postcssImport(), autoprefixer()]
          })
        )
    },
  
    {
      input,
  
      output: [
        {
          ...settings,
          dir: path.dirname(module),
          format: 'esm',
          exports: 'named',
          preserveModulesRoot: './src',
          preserveModules: true // Keep directory structure and files
        }
      ],
      external,
      plugins: getPlugins('esm')
    }
  ];
  
  function transpileDynamicImportForCJS(options) {
    return {
      name: 'transpile-dynamic-import-for-cjs',
      renderDynamicImport({format, targetModuleId}) {
        if (format !== 'cjs') {
          return null;
        }
  
        return {
          left: 'Promise.resolve().then(function() {return new Promise(function(fullfill) {require([',
          right: '], function(mod) {fullfill(tslib.__importStar(mod))})})})'
        };
  
        // return {
        //   left: 'Promise.resolve().then(function() {return new Promise(function(fullfill) {require.ensure([',
        //   right:
        //     '], function(r) {fullfill(_interopDefaultLegacy(r("' +
        //     targetModuleId +
        //     '")))})})})'
        // };
      }
    };
  }
  
  function getPlugins(format = 'esm') {
    const typeScriptOptions = {
      typescript: require('typescript'),
      sourceMap: false,
      outputToFilesystem: true,
      ...(format === 'esm'
        ? {
            compilerOptions: {
              rootDir: './src',
              outDir: path.dirname(module)
            }
          }
        : {
            compilerOptions: {
              rootDir: './src',
              outDir: path.dirname(main)
            }
          })
    };
  
    return [
      svgr({
        svgProps: {
          className: 'icon'
        },
        prettier: false,
        dimensions: false
      }),
      transpileDynamicImportForCJS(),
      autoExternal(),
      json(),
      resolve({
        jsnext: true,
        main: true
      }),
      typescript(typeScriptOptions),
      commonjs({
        sourceMap: false
      }),
      license({
        banner: `
          ${name} v${version}
          Copyright 2018<%= moment().format('YYYY') > 2018 ? '-' + moment().format('YYYY') : null %> ${author}
        `
      })
    ];
  }
  
  function processSass(context, payload) {
    return new Promise((resolve, reject) => {
      sass.render(
        {
          file: context
        },
        function (err, result) {
          if (!err) {
            resolve(result);
          } else {
            reject(err);
          }
        }
      );
    });
  }
  