It was necessary to do a bit of plumbing to get typescript, webpack & vitest all happy. To do this we had had to create a separate tsconfig for the on-prem version and the service frontend. We override the module resolution for both config files. For on-prem we check modules in `pkg/lib` and for the service we resolve the modules to stub functions of the `cockpit` & `cockpit/fsinfo` modules. This was so typescript and webpack would not complain. For on-prem we had to intruct webpack to resolve modules from both `node_modules` and `pkg/lib`. While for the service we set the resulotion for the two modules to false, which means they won't get bundled with the service. Lastly, we needed to set some aliases in the vitest config so that vitest could resolve the `cockpit` & `cockpit/fsinfo` modules. Using the cjs `require` keyword to import cockpit would have worked to make typescript and webpack compile since these imports are not statically analysed like the `import` keyword is. However, this approach broke the tests as `require` imports are not supported in vitest.
28 lines
788 B
JSON
28 lines
788 B
JSON
{
|
|
"compilerOptions": {
|
|
"outDir": "./dist/",
|
|
"noImplicitAny": true,
|
|
"module": "esnext",
|
|
"target": "es2021",
|
|
"downlevelIteration": true, // Needed to allow iteration over some objects like Map() while target is es5
|
|
"jsx": "react-jsx",
|
|
"sourceMap": true,
|
|
"allowJs": true,
|
|
"moduleResolution": "node",
|
|
"types": [
|
|
"vitest/globals",
|
|
"@testing-library/jest-dom"
|
|
],
|
|
"exactOptionalPropertyTypes": true,
|
|
"strictNullChecks": true,
|
|
"allowSyntheticDefaultImports": true,
|
|
"paths": {
|
|
"*": [
|
|
// Needed so we can resolve `cockpit` & `cockpit/fsinfo`
|
|
// types. We have stubbed those functions out for the
|
|
// as this is the tsconfig file for the service.
|
|
"./src/test/mocks/*"
|
|
]
|
|
}
|
|
}
|
|
}
|