Skip to content

Commit ea8173f

Browse files
feat: support custom workspaceRoot for angular CT (#26030)
* fix: support custom workspaceRoot for angular CT * test(system-tests): wip nx system tests * test: remove system-tests until we can test nx --------- Co-authored-by: Jordan <[email protected]>
1 parent cfd4088 commit ea8173f

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

npm/webpack-dev-server/src/helpers/angularHandler.ts

+10-9
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,13 @@ export function getAngularBuildOptions (buildOptions: BuildOptions, tsConfig: st
115115
export async function generateTsConfig (devServerConfig: AngularWebpackDevServerConfig, buildOptions: BuildOptions): Promise<string> {
116116
const { cypressConfig } = devServerConfig
117117
const { projectRoot } = cypressConfig
118+
const { workspaceRoot = projectRoot } = buildOptions
118119

119120
const specPattern = Array.isArray(cypressConfig.specPattern) ? cypressConfig.specPattern : [cypressConfig.specPattern]
120121

121-
const getProjectFilePath = (...fileParts: string[]): string => toPosix(path.join(projectRoot, ...fileParts))
122+
const getProjectFilePath = (...fileParts: string[]): string => toPosix(path.join(...fileParts))
122123

123-
const includePaths = [...specPattern.map((pattern) => getProjectFilePath(pattern))]
124+
const includePaths = [...specPattern.map((pattern) => getProjectFilePath(projectRoot, pattern))]
124125

125126
if (cypressConfig.supportFile) {
126127
includePaths.push(toPosix(cypressConfig.supportFile))
@@ -131,17 +132,17 @@ export async function generateTsConfig (devServerConfig: AngularWebpackDevServer
131132
? buildOptions.polyfills.filter((p: string) => devServerConfig.options?.projectConfig.sourceRoot && p.startsWith(devServerConfig.options?.projectConfig.sourceRoot))
132133
: [buildOptions.polyfills]
133134

134-
includePaths.push(...polyfills.map((p: string) => getProjectFilePath(p)))
135+
includePaths.push(...polyfills.map((p: string) => getProjectFilePath(workspaceRoot, p)))
135136
}
136137

137-
const cypressTypes = getProjectFilePath('node_modules', 'cypress', 'types', 'index.d.ts')
138+
const cypressTypes = getProjectFilePath(workspaceRoot, 'node_modules', 'cypress', 'types', 'index.d.ts')
138139

139140
includePaths.push(cypressTypes)
140141

141142
const tsConfigContent = JSON.stringify({
142-
extends: getProjectFilePath(buildOptions.tsConfig ?? 'tsconfig.json'),
143+
extends: getProjectFilePath(projectRoot, buildOptions.tsConfig ?? 'tsconfig.json'),
143144
compilerOptions: {
144-
outDir: getProjectFilePath('out-tsc/cy'),
145+
outDir: getProjectFilePath(projectRoot, 'out-tsc/cy'),
145146
allowSyntheticDefaultImports: true,
146147
skipLibCheck: true,
147148
},
@@ -253,7 +254,7 @@ async function getAngularCliWebpackConfig (devServerConfig: AngularWebpackDevSer
253254

254255
const buildOptions = getAngularBuildOptions(projectConfig.buildOptions, tsConfig)
255256

256-
const context = createFakeContext(projectRoot, projectConfig, logging)
257+
const context = createFakeContext(projectConfig.buildOptions.workspaceRoot || projectRoot, projectConfig, logging)
257258

258259
const { config } = await generateBrowserWebpackConfigFromContext(
259260
buildOptions,
@@ -275,10 +276,10 @@ async function getAngularCliWebpackConfig (devServerConfig: AngularWebpackDevSer
275276
return
276277
}
277278

278-
const root = path.join(devServerConfig.cypressConfig.projectRoot, projectConfig.sourceRoot)
279+
const root = projectConfig.buildOptions.workspaceRoot || path.join(devServerConfig.cypressConfig.projectRoot, projectConfig.sourceRoot)
279280

280281
debug('Adding root %s to resolve-url-loader options', root)
281-
loader.options.root = path.join(devServerConfig.cypressConfig.projectRoot, projectConfig.sourceRoot)
282+
loader.options.root = root
282283
})
283284
})
284285
})

0 commit comments

Comments
 (0)