Skip to content

Commit df8f8cf

Browse files
authored
fix: validate publish dir in buildbot (#71)
* fix: validate publish dir in buildbot * refactor: use IS_LOCAL
1 parent 3b58f20 commit df8f8cf

File tree

3 files changed

+47
-11
lines changed

3 files changed

+47
-11
lines changed

Diff for: src/helpers/fixOutputDir.js

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
const { join } = require('path')
2+
3+
const getAngularJson = require('./getAngularJson')
4+
const { getProject } = require('./setUpEdgeFunction')
5+
6+
const fixOutputDir = async function ({ failBuild, siteRoot, PUBLISH_DIR, IS_LOCAL, netlifyConfig }) {
7+
const angularJson = getAngularJson({ failBuild, siteRoot })
8+
const project = getProject(angularJson)
9+
10+
const { outputPath } = project.architect.build.options
11+
12+
const correctPublishDir = join(outputPath, 'browser')
13+
if (correctPublishDir === PUBLISH_DIR) {
14+
return
15+
}
16+
17+
if (IS_LOCAL) {
18+
console.warn(`Publish directory is configured incorrectly. Updating to "${correctPublishDir}".`)
19+
netlifyConfig.build.publish = correctPublishDir
20+
} else {
21+
failBuild(`Publish directory is configured incorrectly. Please set it to "${correctPublishDir}".`)
22+
}
23+
}
24+
25+
module.exports = fixOutputDir

Diff for: src/helpers/setUpEdgeFunction.js

+11-6
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,15 @@ const getAllFilesIn = (dir) =>
2020

2121
const toPosix = (path) => path.split(sep).join(posix.sep)
2222

23-
const setUpEdgeFunction = async ({ angularJson, projectName, netlifyConfig, constants, failBuild }) => {
24-
const project = angularJson.projects[projectName]
23+
const getProject = (angularJson) => {
24+
const projectName = angularJson.defaultProject ?? Object.keys(angularJson.projects)[0]
25+
return angularJson.projects[projectName]
26+
}
27+
28+
module.exports.getProject = getProject
29+
30+
const setUpEdgeFunction = async ({ angularJson, constants, failBuild }) => {
31+
const project = getProject(angularJson)
2532
const {
2633
architect: { build },
2734
} = project
@@ -30,15 +37,13 @@ const setUpEdgeFunction = async ({ angularJson, projectName, netlifyConfig, cons
3037
return failBuild('Could not find build output directory')
3138
}
3239

33-
netlifyConfig.build.publish = join(outputDir, 'browser')
34-
3540
const serverDistRoot = join(outputDir, 'server')
3641
if (!existsSync(serverDistRoot)) {
3742
console.log('No server output generated, skipping SSR setup.')
3843
return
3944
}
4045

41-
console.log(`Writing Angular SSR Edge Function for project "${projectName}" ...`)
46+
console.log(`Writing Angular SSR Edge Function ...`)
4247

4348
const edgeFunctionDir = join(constants.INTERNAL_EDGE_FUNCTIONS_SRC, 'angular-ssr')
4449
await mkdir(edgeFunctionDir, { recursive: true })
@@ -101,4 +106,4 @@ const setUpEdgeFunction = async ({ angularJson, projectName, netlifyConfig, cons
101106
await writeFile(join(edgeFunctionDir, 'angular-ssr.mjs'), ssrFunction)
102107
}
103108

104-
module.exports = setUpEdgeFunction
109+
module.exports.setUpEdgeFunction = setUpEdgeFunction

Diff for: src/index.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ const { rm } = require('fs/promises')
22
const { join } = require('path')
33

44
const ensureNoCompetingPlugin = require('./helpers/ensureNoCompetingPlugin')
5+
const fixOutputDir = require('./helpers/fixOutputDir')
56
const getAngularJson = require('./helpers/getAngularJson')
67
const getAngularRoot = require('./helpers/getAngularRoot')
7-
const setUpEdgeFunction = require('./helpers/setUpEdgeFunction')
8+
const { setUpEdgeFunction } = require('./helpers/setUpEdgeFunction')
89
const validateAngularVersion = require('./helpers/validateAngularVersion')
910

1011
let isValidAngularProject = true
@@ -17,7 +18,7 @@ module.exports = {
1718
const edgeFunctionDir = join(constants.INTERNAL_EDGE_FUNCTIONS_SRC, 'angular-ssr')
1819
await rm(edgeFunctionDir, { recursive: true })
1920
},
20-
async onPreBuild({ netlifyConfig, utils }) {
21+
async onPreBuild({ netlifyConfig, utils, constants }) {
2122
const siteRoot = getAngularRoot({ netlifyConfig })
2223
isValidAngularProject = await validateAngularVersion(siteRoot)
2324
if (!isValidAngularProject) {
@@ -28,6 +29,14 @@ module.exports = {
2829
ensureNoCompetingPlugin(siteRoot, utils.build.failBuild)
2930

3031
netlifyConfig.build.command ??= 'npm run build'
32+
33+
await fixOutputDir({
34+
siteRoot,
35+
failBuild: utils.build.failBuild,
36+
PUBLISH_DIR: constants.PUBLISH_DIR,
37+
IS_LOCAL: constants.IS_LOCAL,
38+
netlifyConfig,
39+
})
3140
},
3241
async onBuild({ utils, netlifyConfig, constants }) {
3342
if (!isValidAngularProject) {
@@ -39,11 +48,8 @@ module.exports = {
3948
const siteRoot = getAngularRoot({ netlifyConfig })
4049
const angularJson = getAngularJson({ failBuild, siteRoot })
4150

42-
const projectName = angularJson.defaultProject ?? Object.keys(angularJson.projects)[0]
43-
4451
await setUpEdgeFunction({
4552
angularJson,
46-
projectName,
4753
constants,
4854
netlifyConfig,
4955
failBuild,

0 commit comments

Comments
 (0)