我可以在npm package.json中指定可选的模块依赖项吗?

时间:2014-12-31 14:39:54

标签: node.js npm

我有一个服务,我希望在安装时允许用户指定使用哪个持久性引擎,即基于文件,MongoDB或Redis,并且我正在寻找一些你只下载的npm魔法必要的模块(分别为none,mongodb或redis)。

这可能吗?除了在package.json中定义依赖项和devDependencies之外,我找不到任何其他选项,并且这不适用于此。

另请注意,虽然mongodb和redis模块可能相对较小,但请考虑另一种情况,您可以选择使用Java进行RMI通信。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可能希望使用安装后脚本,然后再安装它们。

您可以使用npm module以编程方式安装内容。

所以,你可能会这样做:

var npm = require('npm'); // make sure npm is in your package.json!
npm.load({/* some object properties, if needed */}, function(err) {
    if (err) {return handleError(err)}
    if (usingMongoDB) {
        npm.commands.install(['mongodb'], function(err){
        if (err) {return handleError(err)}
        console.log('mongodb successfully installed');
    });
});

现在,我从未做过类似的事情,所以我建议您查看程序化npm install以及load的文档。