Я пытаюсь создать пакет 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.