测试或阻止某些相对路径导入/需要

时间:2017-02-06 13:35:36

标签: node.js ecmascript-6 require

我有一个像这样的文件夹结构:

.
└── client                   
    ├── components           
    └── routes               
        ├── index.js         
        ├── Login            
        │   ├── index.js     
        │   ├── assets       
        │   ├── components   
        │   ├── container    
        │   └── modules
        └── UpdatePassword
            ├── index.js     
            ├── assets       
            ├── components   
            ├── container    
            └── modules      

我想看看是否有人将文件从UpdatePassword文件夹导入Login文件夹,反之亦然。

基本上我正在遵循分形项目结构,我希望与UpdatePasswordLogin路由相关的组件只存在于各自的文件夹中。共享组件将存在于client/components子目录中。为了维护这样的结构,我想编写一个在使用“不可接受的”importsrequire时失败的测试。即如果来自UpdatePassword的{​​{1}} imports中的文件。

有没有办法测试或检查导入是否来自特定文件夹?

2 个答案:

答案 0 :(得分:0)

尝试 madge :我通常将其作为class A class B extends A class Container[+T](val content: T) { val map : Map[T, _] = Map.empty } val c1: Container[A] = new Container[B](new B) // needs to compile (covariant) 运行(如果需要,还有一个madge --image /path-to-folder/dependencies.png routes选项)

您将获得一个可视图表,显示文件之间的依赖关系。

答案 1 :(得分:0)

我不知道本地的做法。但是你可以包装"要求"功能:

function myRequire(fromPath, requiredPath) {
  //code to judge whether or not can load requiredPath from fromPath
  var can = ...

  if(can) {
    return require(requiredPath);
  }
  else {
    throw new Error(`you can not load ${requiredPath} from ${fromPath}`);
  }
}