是否在nodeJS中支持库版本控制?
我有像package / version / 1.0 /的文件夹 和此路径下的文件 test1.js test2.js
script.js
//access the folder package of version 1.1
var lib = require('require-all')(__dirname + '/package/version/1.0');
test1.js
========
function sum()
{ a+b ;}
exports.sum = sum;
test2.js
========
function sub()
{ a-b ;}
exports.sub = sub;
在script.js文件中,可以要求package / version / 1.1文件夹。但是如何在我的脚本文件中访问函数sum()和sub()?并且nodeJS支持库版本控制吗?上面的代码是一种库版本?
答案 0 :(得分:0)
首先,我没有在一个软件包中看到库的版本,最常见的方法是发布新版本的软件包并在线上传它们,在package.json依赖项中定义所需的版本,npm将负责下载&安装
如果您想在线弃用某个版本的库,则npm deprecate
是该作业的正确命令。
main
脚本,该脚本将处理包中所有文件的加载。
通常称为index.js
或main.js
,当有人致电require('<library>');
时会使用
因此,您可以尝试以下方法来实现“版本控制”
index.js
var fs=require('fs');
var path=require('path');
var _packageJSON=require(__dirname+'/package.json');
var defaultVersion=_packageJSON.version;
module.exports=function(whichVersion){
whichVersion=whichVersion||defaultVersion;
fs.exists(whichVersion,function(_exists){
if(_exists==null){
throw new Error('Unable to load version : '+whichVersion+' : '+_packageJSON.name);
}else{
// require , 1.0/index.js
require(path.join(whichVersion,'index.js'));
}
}
}
以及任何具有该包作为依赖关系的脚本,只需调用
即可加载它 require("<library name>")(<version>)
例如
require("mylib")("1.0")
在包内的每个版本下,您可以index.js
正确加载/导出变量和函数。
最终结构应该看起来像
index.js
file versions
目录
1.0/index.js
file
util.js
fn.js
var.js
2.0/index.js
file
util.js
fn.js
var.js
希望它有所帮助。