env.js 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.fixBinaryPath = exports.initModulePaths = exports.runByHBuilderX = exports.isInHBuilderX = void 0;
  7. const path_1 = __importDefault(require("path"));
  8. const module_1 = __importDefault(require("module"));
  9. const uni_shared_1 = require("@dcloudio/uni-shared");
  10. const resolve_1 = require("../resolve");
  11. const utils_1 = require("../utils");
  12. exports.isInHBuilderX = (0, uni_shared_1.once)(() => {
  13. // 自动化测试传入了 HX_APP_ROOT(其实就是UNI_HBUILDERX_PLUGINS)
  14. if (process.env.HX_APP_ROOT) {
  15. process.env.UNI_HBUILDERX_PLUGINS = process.env.HX_APP_ROOT + '/plugins';
  16. return true;
  17. }
  18. try {
  19. const { name } = require(path_1.default.resolve(process.cwd(), '../about/package.json'));
  20. if (name === 'about') {
  21. process.env.UNI_HBUILDERX_PLUGINS = path_1.default.resolve(process.cwd(), '..');
  22. return true;
  23. }
  24. }
  25. catch (e) {
  26. // console.error(e)
  27. }
  28. return false;
  29. });
  30. exports.runByHBuilderX = (0, uni_shared_1.once)(() => {
  31. return (!!process.env.UNI_HBUILDERX_PLUGINS &&
  32. (!!process.env.RUN_BY_HBUILDERX || !!process.env.HX_Version));
  33. });
  34. /**
  35. * 增加 node_modules
  36. */
  37. function initModulePaths() {
  38. if (!(0, exports.isInHBuilderX)()) {
  39. return;
  40. }
  41. const Module = module.constructor.length > 1 ? module.constructor : module_1.default;
  42. const nodeModulesPath = path_1.default.resolve(process.env.UNI_CLI_CONTEXT, 'node_modules');
  43. const oldNodeModulePaths = Module._nodeModulePaths;
  44. Module._nodeModulePaths = function (from) {
  45. const paths = oldNodeModulePaths.call(this, from);
  46. if (!paths.includes(nodeModulesPath)) {
  47. paths.push(nodeModulesPath);
  48. }
  49. return paths;
  50. };
  51. }
  52. exports.initModulePaths = initModulePaths;
  53. function resolveEsbuildModule(name) {
  54. try {
  55. return path_1.default.dirname(require.resolve(name + '/package.json', {
  56. paths: [path_1.default.dirname((0, resolve_1.resolveBuiltIn)('esbuild/package.json'))],
  57. }));
  58. }
  59. catch (e) { }
  60. return '';
  61. }
  62. function fixBinaryPath() {
  63. // cli 工程在 HBuilderX 中运行
  64. if (!(0, exports.isInHBuilderX)() && (0, exports.runByHBuilderX)()) {
  65. if (utils_1.isWindows) {
  66. const win64 = resolveEsbuildModule('esbuild-windows-64');
  67. if (win64) {
  68. process.env.ESBUILD_BINARY_PATH = path_1.default.join(win64, 'esbuild.exe');
  69. }
  70. }
  71. else {
  72. const arm64 = resolveEsbuildModule('esbuild-darwin-arm64');
  73. if (arm64) {
  74. process.env.ESBUILD_BINARY_PATH = path_1.default.join(arm64, 'bin/esbuild');
  75. }
  76. }
  77. }
  78. }
  79. exports.fixBinaryPath = fixBinaryPath;