Node.js有条件的要求

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

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

确保您将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检查节点版本,并在需要的插件支持时将所需插件附加到列表中。

如果你想确保版本号的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 } 

你想要做的是检查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属性处理成条件。

你可以使用process.version

 var subver = parseFloat(process.version.replace(/v/, '')); module.exports = { plugins: [ require("a"), require("b"), (subver > 0.11) [require("c"), { default: false }] ] };