Skip to content

Commit

Permalink
fix: support object outputPath for Angular application builder (#96)
Browse files Browse the repository at this point in the history
  • Loading branch information
kyubisation authored May 11, 2024
1 parent 0989712 commit 6002f8a
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ describe('Ngssc Builder', () => {

expect(output.success).toBe(true);

const ngssc = readNgsscJson(applicationHost);
const ngssc = readNgsscJson(applicationHost, 'dist/browser/ngssc.json');
expect(ngssc.variant).toEqual('process');
expect(ngssc.filePattern).toEqual('**/index{.,.server.}html');
});
Expand All @@ -93,7 +93,7 @@ describe('Ngssc Builder', () => {

expect(output.success).toBe(true);

const ngssc = readNgsscJson(applicationHost);
const ngssc = readNgsscJson(applicationHost, 'dist/browser/ngssc.json');
expect(ngssc.environmentVariables).toContain(expected);
});

Expand All @@ -111,5 +111,19 @@ describe('Ngssc Builder', () => {
expect(ngssc.variant).toEqual('process');
expect(ngssc.filePattern).toEqual('index.html');
});

it('should handle object outputPath', async () => {
applicationHost.replaceInFile(
'angular.json',
'"outputPath": "dist",',
`"outputPath": { "base": "dist", "browser": "html" },`,
);
const output = await runNgsscbuild(applicationHost);

expect(output.success).toBe(true);

const ngssc = readNgsscJson(applicationHost, 'dist/html/ngssc.json');
expect(ngssc.variant).toEqual('process');
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ export async function ngsscBuild(options: NgsscBuildSchema, context: BuilderCont
builderName !== '@angular-devkit/build-angular:application'
? undefined
: 'server' in builderOptions && builderOptions.server
? 'server'
: 'browser-only',
? 'server'
: 'browser-only',
);

return result;
Expand All @@ -54,8 +54,11 @@ export async function detectVariablesAndBuildNgsscJson(
applicationBuilderVariant: ApplicationBuilderVariant = undefined,
) {
const ngsscContext = await detectVariables(context, options.searchPattern);
// TODO: Fix possible outputPath options.
let outputPath = join(context.workspaceRoot, builderOptions.outputPath as string);
const builderOutputPath =
typeof builderOptions.outputPath === 'string'
? builderOptions.outputPath
: builderOptions.outputPath.base;
let outputPath = join(context.workspaceRoot, builderOutputPath);
const ngssc = buildNgssc(
ngsscContext,
options,
Expand All @@ -64,10 +67,11 @@ export async function detectVariablesAndBuildNgsscJson(
applicationBuilderVariant,
);

const browserOutputPath = join(outputPath, 'browser');
if (applicationBuilderVariant === 'browser-only' && existsSync(browserOutputPath)) {
outputPath = browserOutputPath;
const browserOutputPaths = [join(outputPath, 'browser')];
if (typeof builderOptions.outputPath !== 'string' && builderOptions.outputPath.browser) {
browserOutputPaths.unshift(join(outputPath, builderOptions.outputPath.browser));
}
outputPath = browserOutputPaths.find(existsSync) ?? outputPath;
writeFileSync(join(outputPath, 'ngssc.json'), JSON.stringify(ngssc, null, 2), 'utf8');
}

Expand Down

0 comments on commit 6002f8a

Please sign in to comment.