gpt4 book ai didi

javascript - 设置 npm 模块配置的最佳方法?

转载 作者:行者123 更新时间:2023-12-03 11:09:17 25 4
gpt4 key购买 nike

我正在寻找一种好方法来为我正在开发的 npm 模块设置配置。

该模块有两个功能notify.sms.send()notify.email.send() 。我还提供了第三个抽象函数,它调用两个(或启用的)称为 notify.send() .

我有一个名为 notify.cfg 的对象这只是一个简单的对象哈希 {} .

我想知道这是否是一个好方法。因为它是一个模块,所以我无法对任何内容进行硬编码,并且应该在需要模块时传入配置......如下所示:

//setup smtp server
var smtp = {
host: xxx,
user: user,
pass: pass,
port: port
};

//setup email headers
var email = {
to: 'user@example.com',
from: 'sender@example.com'
};

var notify = require('app-notify');

//set your configuration
notify.cfg.email = email;
notify.cfg.smtp = smtp;

notify.cfg的签名是这样的:

var cfg = {};
exports.cfg = cfg;

我在测试覆盖 notify.cfg = myConfig 的位置时遇到了一些问题在我的beforeEach测试似乎仍然保留以前运行的测试中的旧数据。我不知道这是我的模块的配置设置还是我编写测试的方式。

对于任何感兴趣的人,代码在这里:https://github.com/chovy/app-notify

最佳答案

您正在有效地使配置单例,因此包变得不太可用。典型的 API 如下所示:

var Notify = require('app-notify');
var notify = new Notify({
email : ...
smtp : ...
});

如果用户想要一个单例 notify 对象,他们只需 module.exports = new Notify({...}) 并在其他地方需要它。

您的 index.js 文件如下所示:

function Notify(config) {
if (!(this instanceof Notify))
return new Notify(config);

....
}

module.exports = Notify;

instanceof 检查用于省略 new 关键字。

关于javascript - 设置 npm 模块配置的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27684813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com