static _parsePluginQueryString(raw = {}) {
    const result = _.cloneDeep(raw);
    const pluginStrings = result.plugin;
    const plugins = [];
    const parseTypes = (ops) => {
      const newOps = {};
      const keyMap = {
        undefined,
        null: null,
        true: true,
        false: false,
      };
      Object.keys(ops).forEach((key) => {
        const value = ops[key];
        if (/^\d+$/.test(value)) {
          newOps[key] = parseInt(value, 10);
        } else if (value in keyMap) {
          newOps[key] = keyMap[value];
        } else {
          newOps[key] = value;
        }
      });
      return newOps;
    };
    const reg = /^((@[a-zA-Z0-9_-]+\/)?[a-zA-Z0-9_-]+)(@(\d+\.\d+\.\d+))?(\?(.*))?$/;
    const getPlugin = (pluginString) => {
      const matches = reg.exec(pluginString);
      if (matches) {
        return {
          name: matches[1],
          version: matches[4],
          options: matches[6] ? parseTypes(querystring.parse(matches[6])) : {},
        };
      }
      logger.error(`Plugin string parse error: ${pluginString}`);
      return null;
    };

    if (_.isString(pluginStrings)) {
      const plugin = getPlugin(pluginStrings);
      if (plugin) {
        plugins.push(plugin);
      }
    } else if (_.isArray(pluginStrings)) {
      pluginStrings.forEach((pstring) => {
        const plugin = getPlugin(pstring);
        if (plugin) {
          plugins.push(plugin);
        }
      });
    }
    result.plugins = plugins;
    delete result.plugin;

    return result;
  }
parse cli plugin query string, add 'plugins' and remove 'plugin'
--plugin @scope/webpack@0.0.1?foo=bar&biz=piz
@param raw
@private