code: function SplitByPathPlugin(buckets, config) {
    config = config || {};
    config.ignore = config.ignore || [];
    config.ignoreChunks = config.ignoreChunks || [];
  
    if (!Array.isArray(config.ignore)) {
      config.ignore = [config.ignore];
    }
  
    if (!Array.isArray(config.ignoreChunks)) {
      config.ignoreChunks = [config.ignoreChunks];
    }
  
    this.ignore = config.ignore.map(function (item) {
      if (item instanceof RegExp) {
        return item;
      }
  
      return new RegExp('^' + regExpQuote(item));
    });
  
    this.ignoreChunks = config.ignoreChunks;
    this.manifest = config.manifest || 'manifest';
  
    // buckets mean each bucket holds a pile of module, which is the same concept as chunk
    this.buckets = buckets.slice(0).map(function (bucket) {
      if (!Array.isArray(bucket.path)) {
        bucket.path = [bucket.path];
      }
  
      bucket.path = bucket.path.map(function (path) {
        if (path instanceof RegExp) {
          return path;
        }
  
        return new RegExp('^' + regExpQuote(path));
      });
  
      return bucket;
    });
  }
docs: @name Bucket
  @property {String} name
  @property {Array<String|RegExp>} path
   
  
  @param {Bucket[]} buckets - instances of Bucket
  @param {Object} config - configurable options include:
  <pre>
  {
  ignore: string[],
  ignoreChunks: string[]
  manifest: string
  }
  </pre>
  @constructor