【问题标题】:How to use globally installed Karma plugins如何使用全局安装的 Karma 插件
【发布时间】:2014-07-10 14:52:53
【问题描述】:

我已经使用 npm install -g 全局安装了一些 karma 插件,例如:karma-requirejs、karma-jasmine...

现在我想在业力测试执行中使用它们。我发现使用它们的唯一方法是使用 karma 配置的插件部分中的 require 函数:

plugins: [

      require('/usr/local/lib/node_modules/karma-requirejs'),
      require('/usr/local/lib/node_modules/karma-jasmine'),
      require('/usr/local/lib/node_modules/karma-junit-reporter'),
      require('/usr/local/lib/node_modules/karma-phantomjs-launcher'),
      require('/usr/local/lib/node_modules/karma-coverage'),
      require('/usr/local/lib/node_modules/karma-requirejs')
  ],

我认为 karma 会首先查看本地 node_modules,然后查看全局。但我必须设置完整的路径。 有没有办法在没有完整路径的情况下使用全局安装的插件?

【问题讨论】:

  • 全局模块用于命令行工具。它们不是共享模块!所以你不应该require他们,尽管有一些技巧可以做到这一点。
  • 我有一个没有 Internet 的设置,并且无法使用本地复制的 couchdb 用于 npm 注册表。我认为最好的方法,虽然听起来不太好,但是将所有插件复制到全局 npm 目录。因为我有很多依赖它们的项目,所以将插件复制到所有项目将是很多工作。

标签: node.js npm karma-runner


【解决方案1】:

对我来说这似乎是一种不好的做法......但是,我认为你可以这样做:

  • 照常在您的业力配置中列出它们:
plugins: [
  'karma-requirejs',
  'karma-jasmine',
  'karma-junit-reporter',
  'karma-phantomjs-launcher',
  'karma-coverage',
  'karma-requirejs'
],
  • 不要将它们添加到您的 package.json (npm)
"devDependencies": {
  "karma": "0.12.17"
  // remove all the plugins listed above
}

注意: Karma 将使用全局安装的节点模块,如果缺少一个则抛出错误。

【讨论】:

  • @eugene82 您希望我强调哪个方面?我认为NB 足够清楚,但如果您认为我可以改进这个答案,请告诉我;)
  • 我的意思是,可以使用 Karma 的全局实例,这样它就不会被声明为依赖项。在这种情况下,必须将插件安装为全局变量。
猜你喜欢
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 2021-04-13
  • 1970-01-01
  • 2011-08-14
  • 2018-08-20
  • 1970-01-01
相关资源
最近更新 更多