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