Перезаписываемая конфигурация на стороне клиента в пользовательском пакете npm - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь создать пакет NPM, в котором несколько функций используют конфигурацию приложения, например:

export const getCountries = () => {
  logger.log("getCountries requested", config.LOG_TARGET);
  return axios.get(`${config.API_BASE_URL}/countries`);
}

Я хочу, чтобы эти значения конфигурации были определены в проекте с использованием моего пакета npm (не вПакет NPM напрямую).

Полагаю, это довольно распространенный вариант использования, но мне еще предстоит найти хорошую статью о том, как лучше всего это сделать.

Я думаю, что-то вроде этого может работать:

// config.js
const defaultConfig = {
  KEY1: "something",
  KEY2: "something else"
}

let config = defaultConfig;

export const getConfig = () => config;
export const setConfig = (newConfig) => {
  config = { ...defaultConfig, ...newConfig };
};

Тогда я смогу использовать его в проекте конечного пользователя, например:

import { setConfig } from 'mypackage/config';
setConfig({ KEY1: "specific value" });

И использовать его в пакете NPM, например:

import { getConfig } from './config';
const config = getConfig();

Есть ли потенциальные ошибки, делающие это?Я пытаюсь изобрести колесо?Есть ли что-то стандартное, что я мог бы использовать?

Я также хотел бы иметь возможность использовать это в среде Webpack, но я думаю, что webpack.DefinePlugin будет достаточно для проведения различий между сборками dev и prod.

...