Javascript 对rollup.js外部文件使用glob或regex模式

Javascript 对rollup.js外部文件使用glob或regex模式,javascript,bundle,rollupjs,Javascript,Bundle,Rollupjs,在我的汇总配置中,是否可以对外部使用glob或regex模式?使用此配置: export default { ... external: [ 'prop-types', 'react', 'prettier/standalone', 'prettier/parser-babylon', 'react-syntax-highlighter/prism-light', 'react-syntax-highlighter/languages/pr

在我的汇总配置中,是否可以对外部使用glob或regex模式?使用此配置:

export default {
  ...
  external: [
    'prop-types',
    'react',
    'prettier/standalone',
    'prettier/parser-babylon',
    'react-syntax-highlighter/prism-light',
    'react-syntax-highlighter/languages/prism/jsx',
    'react-syntax-highlighter/styles/prism/tomorrow',
    'react-element-to-string'
  ],
  ...
};
我想做一些类似的事情:

export default {
  ...
  external: [
    'prop-types',
    'react',
    'prettier/**',
    'react-syntax-highlighter/**',
    'react-element-to-string'
  ],
  ...
};

这在目前是不可能的。但是,您可以使用函数实现类似的功能:

export default {
  ...
  external(id) {
    return [
      'prop-types',
      'react',
      'prettier',
      'react-syntax-highlighter',
      'react-element-to-string'
    ].includes(id.split('/')[0]);
  },
  ...
};
您应该避免在这个函数中进行昂贵的计算,因为它将被大量调用(精确地说,每个文件中的每个导入都会调用一次)

另一个选项是添加
rollup pluginutils
包作为依赖项,该依赖项包含:

import { createFilter } from 'rollup-pluginutils';

const external = createFilter([
  'prop-types',
  'react',
  'prettier/**',
  'react-syntax-highlighter/**',
  'react-element-to-string'
], null, {resolve: false});
// {resolve: false} will make sure these filters are not passed to
// path.resolve first and resolved against the current working directory

export default {
  ...
  external,
  ...
};