karma 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/usr/bin/env node
  2. var path = require('path')
  3. var fs = require('fs')
  4. var resolve = require('resolve')
  5. var info = require('../lib/log')
  6. var NODE_PATH = process.env.NODE_PATH
  7. var requireCliAndRun = function (karmaPath) {
  8. if (process.argv.indexOf('--which') !== -1) {
  9. info.log(karmaPath)
  10. } else {
  11. require(path.join(karmaPath, 'lib', 'cli')).run()
  12. }
  13. }
  14. resolve('karma', {basedir: process.cwd()}, function (err, pathToKarma) {
  15. // There is a local version, let's use it.
  16. if (!err) {
  17. return requireCliAndRun(pathToKarma.replace(/(\/|\\)lib(\/|\\)index\.js/, ''))
  18. }
  19. // We can't load a global one, since NODE_PATH is not defined.
  20. if (!NODE_PATH) {
  21. // Let's try a siblink to karma-cli, that is a global module with NVM.
  22. var siblinkKarma = path.normalize(path.join(__dirname, '..', '..', 'karma'))
  23. if (fs.existsSync(siblinkKarma)) {
  24. return requireCliAndRun(siblinkKarma)
  25. }
  26. info.fatal('Cannot find local Karma!\n' +
  27. ' Please install Karma by `npm install karma --save-dev`.\n' +
  28. ' If you wanna use a global instance, please set NODE_PATH env variable.\n', 1)
  29. return
  30. }
  31. // Let's try global paths.
  32. var globalPaths = NODE_PATH.split(path.delimiter)
  33. var globalKarma
  34. while (globalPaths.length) {
  35. globalKarma = path.normalize(path.join(globalPaths.shift(), 'karma'))
  36. if (fs.existsSync(globalKarma)) {
  37. return requireCliAndRun(globalKarma)
  38. }
  39. }
  40. info.fatal('Cannot find local Karma!\n' +
  41. ' Please install karma by `npm install karma --save-dev`.\n', 1)
  42. })