Skip to content

Commit 55a3718

Browse files
Merge pull request #27361 from storybookjs/valentin/revert-angular-style-adjustments
Angular: Revert style adjustments (cherry picked from commit 346f951)
1 parent 3f2dbd2 commit 55a3718

File tree

10 files changed

+377
-335
lines changed

10 files changed

+377
-335
lines changed

code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts

+1-8
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { dirname, join, resolve } from 'path';
22
import { DefinePlugin, HotModuleReplacementPlugin, ProgressPlugin, ProvidePlugin } from 'webpack';
33
import type { Configuration } from 'webpack';
44
import HtmlWebpackPlugin from 'html-webpack-plugin';
5-
65
// @ts-expect-error (I removed this on purpose, because it's incorrect)
76
import CaseSensitivePathsPlugin from 'case-sensitive-paths-webpack-plugin';
87
import TerserWebpackPlugin from 'terser-webpack-plugin';
@@ -54,11 +53,7 @@ const storybookPaths: Record<string, string> = {
5453
};
5554

5655
export default async (
57-
options: Options & {
58-
typescriptOptions: TypescriptOptions;
59-
/* Build entries, which should not be linked in the iframe HTML file */
60-
excludeChunks?: string[];
61-
}
56+
options: Options & { typescriptOptions: TypescriptOptions }
6257
): Promise<Configuration> => {
6358
const {
6459
outputDir = join('.', 'public'),
@@ -69,7 +64,6 @@ export default async (
6964
previewUrl,
7065
typescriptOptions,
7166
features,
72-
excludeChunks = [],
7367
} = options;
7468

7569
const isProd = configType === 'PRODUCTION';
@@ -178,7 +172,6 @@ export default async (
178172
alwaysWriteToDisk: true,
179173
inject: false,
180174
template,
181-
excludeChunks,
182175
templateParameters: {
183176
version: packageJson.version,
184177
globals: {
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,18 @@
1-
import { BuilderContext, BuilderOutput, createBuilder } from '@angular-devkit/architect';
1+
import {
2+
BuilderContext,
3+
BuilderHandlerFn,
4+
BuilderOutput,
5+
BuilderOutputLike,
6+
Target,
7+
createBuilder,
8+
targetFromTargetString,
9+
} from '@angular-devkit/architect';
210
import { JsonObject } from '@angular-devkit/core';
11+
import { from, of, throwError } from 'rxjs';
12+
import { catchError, map, mapTo, switchMap } from 'rxjs/operators';
313
import { sync as findUpSync } from 'find-up';
414
import { sync as readUpSync } from 'read-pkg-up';
5-
import { StylePreprocessorOptions } from '@angular-devkit/build-angular';
15+
import { BrowserBuilderOptions, StylePreprocessorOptions } from '@angular-devkit/build-angular';
616

717
import { CLIOptions } from '@storybook/types';
818
import { getEnvConfig, versions } from '@storybook/core-common';
@@ -12,13 +22,11 @@ import { buildStaticStandalone, withTelemetry } from '@storybook/core-server';
1222
import {
1323
AssetPattern,
1424
SourceMapUnion,
15-
StyleClass,
1625
StyleElement,
1726
} from '@angular-devkit/build-angular/src/builders/browser/schema';
1827
import { StandaloneOptions } from '../utils/standalone-options';
1928
import { runCompodoc } from '../utils/run-compodoc';
2029
import { errorSummary, printErrorDetails } from '../utils/error-handler';
21-
import { setup } from '../utils/setup';
2230

2331
addToGlobalContext('cliVersion', versions.storybook);
2432

@@ -51,86 +59,119 @@ export type StorybookBuilderOptions = JsonObject & {
5159

5260
export type StorybookBuilderOutput = JsonObject & BuilderOutput & { [key: string]: any };
5361

54-
type StandaloneBuildOptions = StandaloneOptions & { outputDir: string; excludeChunks: string[] };
62+
type StandaloneBuildOptions = StandaloneOptions & { outputDir: string };
63+
64+
const commandBuilder: BuilderHandlerFn<StorybookBuilderOptions> = (
65+
options,
66+
context
67+
): BuilderOutputLike => {
68+
const builder = from(setup(options, context)).pipe(
69+
switchMap(({ tsConfig }) => {
70+
const docTSConfig = findUpSync('tsconfig.doc.json', { cwd: options.configDir });
71+
const runCompodoc$ = options.compodoc
72+
? runCompodoc(
73+
{ compodocArgs: options.compodocArgs, tsconfig: docTSConfig ?? tsConfig },
74+
context
75+
).pipe(mapTo({ tsConfig }))
76+
: of({});
77+
78+
return runCompodoc$.pipe(mapTo({ tsConfig }));
79+
}),
80+
map(({ tsConfig }) => {
81+
getEnvConfig(options, {
82+
staticDir: 'SBCONFIG_STATIC_DIR',
83+
outputDir: 'SBCONFIG_OUTPUT_DIR',
84+
configDir: 'SBCONFIG_CONFIG_DIR',
85+
});
86+
87+
const {
88+
browserTarget,
89+
stylePreprocessorOptions,
90+
styles,
91+
configDir,
92+
docs,
93+
loglevel,
94+
test,
95+
outputDir,
96+
quiet,
97+
enableProdMode = true,
98+
webpackStatsJson,
99+
statsJson,
100+
debugWebpack,
101+
disableTelemetry,
102+
assets,
103+
previewUrl,
104+
sourceMap = false,
105+
} = options;
106+
107+
const standaloneOptions: StandaloneBuildOptions = {
108+
packageJson: readUpSync({ cwd: __dirname }).packageJson,
109+
configDir,
110+
...(docs ? { docs } : {}),
111+
loglevel,
112+
outputDir,
113+
test,
114+
quiet,
115+
enableProdMode,
116+
disableTelemetry,
117+
angularBrowserTarget: browserTarget,
118+
angularBuilderContext: context,
119+
angularBuilderOptions: {
120+
...(stylePreprocessorOptions ? { stylePreprocessorOptions } : {}),
121+
...(styles ? { styles } : {}),
122+
...(assets ? { assets } : {}),
123+
sourceMap,
124+
},
125+
tsConfig,
126+
webpackStatsJson,
127+
statsJson,
128+
debugWebpack,
129+
previewUrl,
130+
};
131+
132+
return standaloneOptions;
133+
}),
134+
switchMap((standaloneOptions) => runInstance({ ...standaloneOptions, mode: 'static' })),
135+
map(() => {
136+
return { success: true };
137+
})
138+
);
139+
140+
return builder as any as BuilderOutput;
141+
};
55142

56-
const commandBuilder = async (
57-
options: StorybookBuilderOptions,
58-
context: BuilderContext
59-
): Promise<BuilderOutput> => {
60-
const { tsConfig, angularBuilderContext, angularBuilderOptions } = await setup(options, context);
143+
export default createBuilder(commandBuilder);
61144

62-
const docTSConfig = findUpSync('tsconfig.doc.json', { cwd: options.configDir });
145+
async function setup(options: StorybookBuilderOptions, context: BuilderContext) {
146+
let browserOptions: (JsonObject & BrowserBuilderOptions) | undefined;
147+
let browserTarget: Target | undefined;
63148

64-
if (options.compodoc) {
65-
await runCompodoc(
66-
{ compodocArgs: options.compodocArgs, tsconfig: docTSConfig ?? tsConfig },
67-
context
149+
if (options.browserTarget) {
150+
browserTarget = targetFromTargetString(options.browserTarget);
151+
browserOptions = await context.validateOptions<JsonObject & BrowserBuilderOptions>(
152+
await context.getTargetOptions(browserTarget),
153+
await context.getBuilderNameForTarget(browserTarget)
68154
);
69155
}
70156

71-
getEnvConfig(options, {
72-
staticDir: 'SBCONFIG_STATIC_DIR',
73-
outputDir: 'SBCONFIG_OUTPUT_DIR',
74-
configDir: 'SBCONFIG_CONFIG_DIR',
75-
});
76-
77-
const {
78-
configDir,
79-
docs,
80-
loglevel,
81-
test,
82-
outputDir,
83-
quiet,
84-
enableProdMode = true,
85-
webpackStatsJson,
86-
statsJson,
87-
debugWebpack,
88-
disableTelemetry,
89-
previewUrl,
90-
} = options;
91-
92-
const standaloneOptions: StandaloneBuildOptions = {
93-
packageJson: readUpSync({ cwd: __dirname }).packageJson,
94-
configDir,
95-
...(docs ? { docs } : {}),
96-
excludeChunks: angularBuilderOptions.styles
97-
?.filter((style) => typeof style !== 'string' && style.inject === false)
98-
.map((s: StyleClass) => s.bundleName),
99-
loglevel,
100-
outputDir,
101-
test,
102-
quiet,
103-
enableProdMode,
104-
disableTelemetry,
105-
angularBrowserTarget: options.browserTarget,
106-
angularBuilderContext,
107-
angularBuilderOptions,
108-
tsConfig,
109-
webpackStatsJson,
110-
statsJson,
111-
debugWebpack,
112-
previewUrl,
157+
return {
158+
tsConfig:
159+
options.tsConfig ??
160+
findUpSync('tsconfig.json', { cwd: options.configDir }) ??
161+
browserOptions.tsConfig,
113162
};
163+
}
114164

115-
await runInstance({ ...standaloneOptions, mode: 'static' });
116-
117-
return { success: true };
118-
};
119-
120-
export default createBuilder(commandBuilder);
121-
122-
async function runInstance(options: StandaloneBuildOptions) {
123-
try {
124-
await withTelemetry(
165+
function runInstance(options: StandaloneBuildOptions) {
166+
return from(
167+
withTelemetry(
125168
'build',
126169
{
127170
cliOptions: options,
128171
presetOptions: { ...options, corePresets: [], overridePresets: [] },
129172
printError: printErrorDetails,
130173
},
131174
() => buildStaticStandalone(options)
132-
);
133-
} catch (error) {
134-
throw new Error(errorSummary(error));
135-
}
175+
)
176+
).pipe(catchError((error: any) => throwError(errorSummary(error))));
136177
}

0 commit comments

Comments
 (0)