如何在不同的环境中避免使用茉莉花的长相对path(../../../)?

我目前正在开发一个项目,我想在不同的环境下testing – 包括node.js和不同的浏览器,包括karma / selenium – 以避免兼容性问题。 (我想我会在浏览器中使用browserify,但是我还不熟悉它。)

我有一个嵌套的testing目录,如下所示:

repo/ - project.js - project.my.module.js - spec/ -- helpers/ --- a.jasmine.helper.js -- support/ --- jasmine.json -- project.my.module/ --- ModuleClass.spec.js -- project.MyClass.spec.js -- project.OtherClass.spec.js 

目前我只用jasmine-npm(对于node.js是jasmine 2.2)来testing项目。 通过testing工作目录是repo/ ,我用jasmine.js运行jasmine.jsjasmine.js加载jasmine.json

 { "spec_dir": "spec", "spec_files": [ "**/*[sS]pec.js" ], "helpers": [ "helpers/**/*.js" ] } 

现在我有两个问题在这里。

  • 我如何通过require来避免长相对path,例如ModuleClass.spec.js文件中的require("../../project.my.module.js") ? (我宁愿使用一个简短的常量名称,就像我可以通过符号链接一样)。
  • 我怎样才能以不同的浏览器运行相同的testing文件兼容的方式? (我想通过testing保持commonjs模块的定义。)

我检查了一些关于node.js的教程,看起来我有两个select。 我可以使用package.json (有一些我不知道的魔术configuration选项),或者我可以将我想要加载的文件移动到node_modules/ (我相信我不会这么做)。 我很乐意提供build议,因为我看不出如何解决这个问题。

编辑:

karma-browserify似乎解决了testing问题,可能我必须为浏览器添加一个茉莉花,但没关系。 我不必通过testing来改变commonjs模块的定义。 所以可以在node.js和浏览器中使用长path进行testing。

EDIT2:

我最终将我的回购的父目录添加到NODE_PATH。 这样我可以要求我目前正在开发的每个项目。

那么在node_modules (例如node_modules/project )下的node_modules项目目录并需要require("project/project.my.module.js")呢?