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

ant*_*ous 5 node.js npm

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

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

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

谢谢!

Sci*_*ter 3

您可能想要使用安装后脚本,然后安装它们。

您可以使用该npm模块以编程方式安装东西。

所以,你可能会这样做:

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');
    });
});
Run Code Online (Sandbox Code Playgroud)

现在,我从来没有做过这样的事情,所以我建议您查看programmaticnpm installload.