Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义npm包中客户端的可重写配置_Npm_Webpack_Config - Fatal编程技术网

自定义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包中定义) 我想这是一个相当常见的用例,但是我还没有

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