Node.js有条件的要求

时间:2015-12-21 16:41:35

标签: javascript node.js

考虑最近版本的Node支持插件c。 有条件加载它的最佳方法是什么?

module.exports = {
  plugins: [   
    require("a"),
    require("b"),
    [require("c"), { default: false }] //only if node version > 0.11
  ]
};

4 个答案:

答案 0 :(得分:4)

确保将semver包添加为依赖项,然后:

var semver = require("semver")
var plugins = [   
    require("a"),
    require("b"),
  ];

if(semver.gt(process.version, "0.11")){
    plugins.push(require("c"));
}

module.exports = {
  plugins: plugins
};

此代码使用process.version检查节点版本,如果支持,则将所需插件附加到列表中。

答案 1 :(得分:1)

如果您想确保版本号的major部分为0且版本号的minor部分大于11,您可以使用此

var sem_ver = process.version.replace(/[^0-9\.]/g, '').split('.');

if(parseInt(sem_ver[0], 10) == 0 && parseInt(sem_ver[1], 10) > 11)) {
    // load it

}

答案 2 :(得分:0)

您可以使用process.version

var subver = parseFloat(process.version.replace(/v/, ''));

module.exports = {
  plugins: [   
    require("a"),
    require("b"),
    (subver > 0.11) [require("c"), { default: false }]
  ]
};

答案 3 :(得分:0)

您要做的是检查process对象。根据文档,它会给你一个像这样的对象:

console.log(process.versions);

{ http_parser: '1.0',
  node: '0.10.4',
  v8: '3.14.5.8',
  ares: '1.9.0-DEV',
  uv: '0.10.3',
  zlib: '1.2.3',
  modules: '11',
  openssl: '1.0.1e' }

然后,只需在您的对象中将node属性处理为条件。