自定义npm包中客户端的可覆盖配置

时间:2019-03-25 14:49:04

标签: npm webpack config

我正在尝试编写一个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足以区分开发和生产版本。

0 个答案:

没有答案