| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import { rm } from 'node:fs/promises';
- import { join } from 'node:path';
- import tsconfigPaths from 'tsconfig-paths';
- import { describe, expect, it } from 'vitest';
- import { compile } from '../utils/compiler.js';
- import { debugLogger, noopLogger } from '../utils/logger.js';
- describe('detecting plugins in npm packages', () => {
- it(
- 'should detect plugins in npm packages',
- async () => {
- const tempDir = join(__dirname, './__temp/npm-plugin');
- await rm(tempDir, { recursive: true, force: true });
- const fakeNodeModules = join(__dirname, 'fixtures-npm-plugin', 'fake_node_modules');
- // For this test to work, we need to use tsconfigPaths to point
- // the `test-plugin` package to the `fake_node_modules` directory.
- // This is because the `test-plugin` package is not installed in
- // the `node_modules` directory, but in the `fake_node_modules`
- // directory.
- tsconfigPaths.register({
- baseUrl: fakeNodeModules,
- paths: {
- 'test-plugin': [join(fakeNodeModules, 'test-plugin')],
- },
- });
- const result = await compile({
- outputPath: tempDir,
- vendureConfigPath: join(__dirname, 'fixtures-npm-plugin', 'vendure-config.ts'),
- logger: process.env.LOG ? debugLogger : noopLogger,
- pluginPackageScanner: {
- nodeModulesRoot: fakeNodeModules,
- },
- });
- expect(result.pluginInfo).toHaveLength(1);
- expect(result.pluginInfo[0].name).toBe('TestPlugin');
- expect(result.pluginInfo[0].dashboardEntryPath).toBe('./dashboard/index.tsx');
- expect(result.pluginInfo[0].sourcePluginPath).toBeUndefined();
- expect(result.pluginInfo[0].pluginPath).toBe(join(fakeNodeModules, 'test-plugin', 'index.js'));
- },
- { timeout: 10_000 },
- );
- });
|