Babel.js 如何从项目中为自己的npm包/节点模块设置全局/环境变量?

ctrmrzij  于 11个月前  发布在  Babel
关注(0)|答案(2)|浏览(233)

我已经为react做了自己的npm包,我们称之为@group/package
在那个包裹里,我做了可出口的钩子。
作为一个例子,我做了一个钩子,我们将调用useFetchWithRefreshToken。在那个钩子中,我将始终调用相同的API_URL,但API_URL依赖于我的项目。
我不想对所有需要获取的文件都这样做。

const [load, loading] = useFetchWithRefreshToken({ url: API_URL + endpoint });

字符串
因此,我尝试使用环境变量,但正如我怀疑的那样,它不起作用。从@group/package访问的process.env值可能是在我运行包中的npm run build / npm publish时确定的,而不是在我运行安装了它的react应用时确定的。
我可能可以通过redux在我的模块和项目之间共享数据,但我希望开发人员更容易填写。
一个.rc或.json配置文件,比如babel或eslint,就很完美了。
我该怎么做?

byqmnocz

byqmnocz1#

如果你想读取自己的配置文件,那么我建议你使用cosmic config library。因为它支持所有标准的配置文件格式,并提供了一个简单的标准API,无论文件格式如何,它都可以读取数据。
https://github.com/cosmiconfig/cosmiconfig

hkmswyz6

hkmswyz62#

你可以用前缀REACT_APP_定义你的env。你可以在这里阅读更多:https://create-react-app.dev/docs/adding-custom-environment-variables/
ReactJS
.env

REACT_APP_API_URL=https://myurl.com

字符串
在您的包中,您可以如下读取此env

const [load, loading] = useFetchWithRefreshToken({ url: process.env.REACT_APP_API_URL + endpoint });


如果你已经弹出了react应用程序,那么你可以在webpack文件中找到env附加到项目的那一行,然后手动添加API_URL来支持你上面在包中只使用API_URL的实现。

相关问题