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

How to avoid long relative paths (../../../) with jasmine in different environments?

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

我有一个嵌套的测试目录,像这样:

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)测试了该项目。通过测试工作目录是repo/,我这里是运行node.exejasmine.jsjasmine.js 加载 jasmine.json:

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

现在我这里有 2 个问题。

我查看了一些关于 node.js 的教程,看来我有两个选择。我可以使用 package.json(有一些我不知道的神奇配置选项),或者我可以将我想要加载的文件移动到 node_modules/(我确定我不会这样做)。我愿意接受建议,因为我看不出如何解决这个问题...

编辑:

karma-browserify 似乎解决了测试问题,可能我必须为浏览器添加一个茉莉花,但没关系。我不必通过测试更改 commonjs 模块定义。因此可以在 node.js 和具有长路径的浏览器中进行测试。

edit2:

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

如何在 node_modules 下符号链接您的项目目录(例如 node_modules/project)并要求 require("project/project.my.module.js")