访问nodejs中文件夹中的所有文件

时间:2014-04-11 04:47:21

标签: node.js

是否在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支持库版本控制吗?上面的代码是一种库版本?

1 个答案:

答案 0 :(得分:0)

首先,我没有在一个软件包中看到库的版本,最常见的方法是发布新版本的软件包并在线上传它们,在package.json依赖项中定义所需的版本,npm将负责下载&安装

如果您想在线弃用某个版本的库,则npm deprecate是该作业的正确命令。

<小时/> 当您创建新的npm包时,您可以定义一个main脚本,该脚本将处理包中所有文件的加载。

通常称为index.jsmain.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正确加载/导出变量和函数。

最终结构应该看起来像

  • 我的npm包主模块
    • 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

希望它有所帮助。