Skip to content

Commit d872b35

Browse files
authored
fix(dts-plugin): add specify dir and mf name to cache path (#3534)
1 parent 5ebc53f commit d872b35

File tree

10 files changed

+89
-31
lines changed

10 files changed

+89
-31
lines changed

.changeset/orange-days-kiss.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@module-federation/dts-plugin': patch
3+
---
4+
5+
fix(dts-plugin): cache file should have name as its unique path

packages/dts-plugin/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@
7272
"@module-federation/runtime": "workspace:*",
7373
"vue": "^3.4.29",
7474
"@vue/tsconfig": "^0.5.1",
75-
"vue-tsc": "^2.0.26"
75+
"vue-tsc": "^2.0.26",
76+
"rimraf": "~3.0.2"
7677
},
7778
"peerDependencies": {
7879
"typescript": "^4.9.0 || ^5.0.0",

packages/dts-plugin/project.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@
1818
}
1919
},
2020
"test": {
21+
"executor": "nx:run-commands",
22+
"outputs": ["{workspaceRoot}/coverage/packages/dts-plugin"],
23+
"options": {
24+
"parallel": false,
25+
"commands": [
26+
"rimraf packages/dts-plugin/dist-test",
27+
"nx run dts-plugin:test-impl"
28+
]
29+
}
30+
},
31+
"test-impl": {
2132
"executor": "@nx/vite:test",
2233
"outputs": ["{workspaceRoot}/coverage/packages/dts-plugin"]
2334
},

packages/dts-plugin/src/core/configurations/remotePlugin.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ describe('hostPlugin', () => {
5757
incremental: true,
5858
tsBuildInfoFile: resolve(
5959
remoteOptions.context,
60-
'node_modules/.cache/.tsbuildinfo',
60+
'node_modules/.cache/mf-types/.tsbuildinfo',
6161
),
6262
},
6363
files: ['./src/components/button', './src/components/anotherButton'],
@@ -76,7 +76,7 @@ describe('hostPlugin', () => {
7676
typesFolder: '@mf-types',
7777
compiledTypesFolder: 'compiled-types',
7878
hostRemoteTypesFolder: '@mf-types',
79-
deleteTypesFolder: true,
79+
deleteTypesFolder: false,
8080
moduleFederationConfig,
8181
compilerInstance: 'tsc',
8282
compileInChildProcess: false,
@@ -126,7 +126,7 @@ describe('hostPlugin', () => {
126126
incremental: true,
127127
tsBuildInfoFile: resolve(
128128
remoteOptions.context,
129-
'node_modules/.cache/.tsbuildinfo',
129+
'node_modules/.cache/mf-types/.tsbuildinfo',
130130
),
131131
},
132132
exclude: [],

packages/dts-plugin/src/core/configurations/remotePlugin.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ const readTsConfig = (
6161
context,
6262
additionalFilesToCompile,
6363
outputDir,
64+
moduleFederationConfig,
6465
}: Required<RemoteOptions>,
6566
mapComponentsToExpose: Record<string, string>,
6667
): TsConfigJson => {
@@ -97,13 +98,16 @@ const readTsConfig = (
9798
noEmit: false,
9899
declaration: true,
99100
outDir,
100-
incremental: true,
101-
tsBuildInfoFile: resolve(context, 'node_modules/.cache/.tsbuildinfo'),
102101
};
103102

104103
rawTsConfigJson.compilerOptions = rawTsConfigJson.compilerOptions || {};
105104

106105
rawTsConfigJson.compilerOptions = {
106+
incremental: true,
107+
tsBuildInfoFile: resolve(
108+
context,
109+
'node_modules/.cache/mf-types/.tsbuildinfo',
110+
),
107111
...rawTsConfigJson.compilerOptions,
108112
...defaultCompilerOptions,
109113
};
@@ -183,6 +187,14 @@ export const retrieveRemoteConfig = (options: RemoteOptions) => {
183187
const mapComponentsToExpose = resolveExposes(remoteOptions);
184188
const tsConfig = readTsConfig(remoteOptions, mapComponentsToExpose);
185189

190+
if (
191+
tsConfig.compilerOptions.incremental &&
192+
tsConfig.compilerOptions.tsBuildInfoFile &&
193+
options.deleteTypesFolder !== true
194+
) {
195+
remoteOptions.deleteTypesFolder = false;
196+
}
197+
186198
return {
187199
tsConfig,
188200
mapComponentsToExpose,

packages/dts-plugin/src/core/lib/DTSManager.advance.spec.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import axios from 'axios';
33
import dirTree from 'directory-tree';
44
import { readFileSync, rmSync } from 'fs';
55
import { join } from 'path';
6-
import { describe, expect, it, vi, afterAll } from 'vitest';
6+
import { describe, expect, it, vi, beforeAll } from 'vitest';
77
import { DTSManager } from './DTSManager';
88
const TEST_DIT_DIR = 'dist-test';
99

@@ -55,6 +55,16 @@ describe('DTSManager advance usage', () => {
5555
host: hostOptions,
5656
});
5757

58+
beforeAll(() => {
59+
try {
60+
rmSync(join(projectRoot, 'node_modules/.cache/mf-types'), {
61+
recursive: true,
62+
});
63+
} catch (err) {
64+
//noop
65+
}
66+
});
67+
5868
it('generate types with api declaration file', async () => {
5969
const distFolder = join(
6070
projectRoot,

packages/dts-plugin/src/core/lib/DTSManager.general.spec.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ describe('DTSManager General Tests', () => {
8686
implementation: 'webpack',
8787
abortOnError: false,
8888
};
89+
fs.rmSync(path.join(projectRoot, 'node_modules/.cache/mf-types'), {
90+
recursive: true,
91+
});
8992
dtsManager = new DTSManager({ remote: remoteOptions });
9093

9194
// Add mock implementations

packages/dts-plugin/src/core/lib/DTSManager.spec.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import axios from 'axios';
33
import dirTree from 'directory-tree';
44
import { rmSync, existsSync } from 'fs';
55
import { join } from 'path';
6-
import { describe, expect, it, vi } from 'vitest';
6+
import { describe, expect, it, vi, beforeAll } from 'vitest';
77
import { DTSManager } from './DTSManager';
88
import { UpdateMode } from '../../server/constant';
99

@@ -53,6 +53,16 @@ describe('DTSManager', () => {
5353
host: hostOptions,
5454
});
5555

56+
beforeAll(() => {
57+
try {
58+
rmSync(join(projectRoot, 'node_modules/.cache/mf-types'), {
59+
recursive: true,
60+
});
61+
} catch (err) {
62+
//noop
63+
}
64+
});
65+
5666
it('generate types', async () => {
5767
const distFolder = join(
5868
projectRoot,
@@ -343,8 +353,7 @@ describe('DTSManager', () => {
343353
TEST_DIT_DIR,
344354
remoteOptions.typesFolder,
345355
);
346-
rmSync(distFolder, { recursive: true });
347-
expect(existsSync(distFolder)).toEqual(false);
356+
348357
await dtsManager.updateTypes({
349358
remoteName: hostOptions.moduleFederationConfig.name,
350359
remoteTarPath: '',

packages/dts-plugin/src/core/lib/typeScriptCompiler.test.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@ describe('typeScriptCompiler', () => {
1919
const basicConfig = readJSONSync(
2020
join(__dirname, '../../..', './tsconfig.spec.json'),
2121
);
22+
const projectRoot = join(__dirname, '../../..');
23+
2224
const tsConfig: TsConfigJson = {
2325
...basicConfig,
24-
extends: resolve(join(__dirname, '../../..'), basicConfig.extends),
26+
extends: resolve(projectRoot, basicConfig.extends),
2527
compilerOptions: {
2628
...basicConfig.compilerOptions,
2729
outDir: join(tmpDir, 'typesRemoteFolder', 'compiledTypesFolder'),
28-
rootDir: join(__dirname, '../../..'),
30+
rootDir: projectRoot,
2931
emitDeclarationOnly: true,
3032
noEmit: false,
3133
declaration: true,
@@ -47,9 +49,10 @@ describe('typeScriptCompiler', () => {
4749
extractThirdParty: false,
4850
extractRemoteTypes: false,
4951
implementation: '',
50-
context: join(__dirname, '../../..'),
52+
context: projectRoot,
5153
hostRemoteTypesFolder: '@mf-types',
5254
abortOnError: true,
55+
outputDir: 'outputDir',
5356
};
5457

5558
it('retrieveMfTypesPath correctly calculate path', () => {

pnpm-lock.yaml

Lines changed: 22 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)