自定义npm包中客户端的可重写配置
我正在尝试编写一个NPM包,其中有几个函数使用应用程序配置,如:自定义npm包中客户端的可重写配置,npm,webpack,config,Npm,Webpack,Config,我正在尝试编写一个NPM包,其中有几个函数使用应用程序配置,如: export const getCountries = () => { logger.log("getCountries requested", config.LOG_TARGET); return axios.get(`${config.API_BASE_URL}/countries`); } 我希望这些配置值可以使用我的npm包在项目中定义(而不是直接在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
足以区分开发版本和产品版本