export default()

in packages/core/src/plugins/config/config.ts [56:99]


export default (api: PluginAPI, opts: PluginOptions, args: CommandArgs) => {

  /**
   * register get config api 
   */
  let config: PluginConfig | null = null;
  const absConfigPath = args.config ? join(api.getCwd(), args.config) : getConfigFile(api.getCwd());

  api.registerSyncAPI('getConfig', () => {

    let devConfig = {};
    if (getEnv().isDev()) {
      try {
        devConfig = require(absConfigPath.replace(/\.js$/, `.local.js`));
      } catch(e) {
        //...
      }
    }

    // 如果用户自己传入了配置, 那么使用传入的配置.
    // TODO: 最好是可以合并配置
    if (opts.config) {
      config = opts.config;
    }
 
    if (config) {
      return config;
    }

    config = defaultConfig();
    if (absConfigPath) {
      config = Object.assign(
        {},
        config,
        requireFile(absConfigPath),
        devConfig,
      );
    }

    debug('core', 'finish process config, config is: %j', config);

    return config;
  });
};