index.js 941 B

1234567891011121314151617181920212223242526272829303132333435
  1. var GLOBAL_KEY = 'app-root-dir';
  2. var _rootDir;
  3. exports.get = function() {
  4. var dir = global[GLOBAL_KEY];
  5. if (dir) {
  6. return dir;
  7. }
  8. if (_rootDir === undefined) {
  9. var fs = require('fs');
  10. var path = require('path');
  11. var NODE_MODULES = path.sep + 'node_modules' + path.sep;
  12. var cwd = process.cwd();
  13. var pos = cwd.indexOf(NODE_MODULES);
  14. if (pos !== -1) {
  15. _rootDir = cwd.substring(0, pos);
  16. } else if (fs.existsSync(path.join(cwd, 'package.json'))) {
  17. _rootDir = cwd;
  18. } else {
  19. pos = __dirname.indexOf(NODE_MODULES);
  20. if (pos === -1) {
  21. _rootDir = path.normalize(path.join(__dirname, '..'));
  22. } else {
  23. _rootDir = __dirname.substring(0, pos);
  24. }
  25. }
  26. }
  27. return _rootDir;
  28. };
  29. exports.set = function(dir) {
  30. global[GLOBAL_KEY] = _rootDir = dir;
  31. };