path-alias.spec.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { rm } from 'node:fs/promises';
  2. import { join } from 'node:path';
  3. import { describe, expect, it } from 'vitest';
  4. import { compile } from '../utils/compiler.js';
  5. import { debugLogger, noopLogger } from '../utils/logger.js';
  6. describe('detecting plugins using tsconfig path aliases', () => {
  7. it(
  8. 'should detect plugins using tsconfig path aliases',
  9. async () => {
  10. const tempDir = join(__dirname, './__temp/path-alias');
  11. await rm(tempDir, { recursive: true, force: true });
  12. const result = await compile({
  13. outputPath: tempDir,
  14. vendureConfigPath: join(__dirname, 'fixtures-path-alias', 'vendure-config.ts'),
  15. logger: process.env.LOG ? debugLogger : noopLogger,
  16. pathAdapter: {
  17. transformTsConfigPathMappings: ({ phase, patterns }) => {
  18. if (phase === 'loading') {
  19. return patterns.map(pattern => {
  20. return pattern.replace(/\/fixtures-path-alias/, '').replace(/.ts$/, '.js');
  21. });
  22. } else {
  23. return patterns;
  24. }
  25. },
  26. },
  27. });
  28. const plugins = result.pluginInfo.sort((a, b) => a.name.localeCompare(b.name));
  29. expect(plugins).toHaveLength(3);
  30. expect(plugins[0].name).toBe('JsAliasedPlugin');
  31. expect(plugins[0].dashboardEntryPath).toBe('./dashboard/index.tsx');
  32. expect(plugins[0].sourcePluginPath).toBe(
  33. join(__dirname, 'fixtures-path-alias', 'js-aliased', 'src', 'js-aliased.plugin.ts'),
  34. );
  35. expect(plugins[0].pluginPath).toBe(join(tempDir, 'js-aliased', 'src', 'js-aliased.plugin.js'));
  36. expect(plugins[1].name).toBe('StarAliasedPlugin');
  37. expect(plugins[1].dashboardEntryPath).toBe('./dashboard/index.tsx');
  38. expect(plugins[1].sourcePluginPath).toBe(
  39. join(__dirname, 'fixtures-path-alias', 'star-aliased', 'src', 'star-aliased.plugin.ts'),
  40. );
  41. expect(plugins[1].pluginPath).toBe(
  42. join(tempDir, 'star-aliased', 'src', 'star-aliased.plugin.js'),
  43. );
  44. expect(plugins[2].name).toBe('TsAliasedPlugin');
  45. expect(plugins[2].dashboardEntryPath).toBe('./dashboard/index.tsx');
  46. expect(plugins[2].sourcePluginPath).toBe(
  47. join(__dirname, 'fixtures-path-alias', 'ts-aliased', 'src', 'ts-aliased.plugin.ts'),
  48. );
  49. expect(plugins[2].pluginPath).toBe(join(tempDir, 'ts-aliased', 'src', 'ts-aliased.plugin.js'));
  50. },
  51. { timeout: 10_000 },
  52. );
  53. });