From 858ba1604b7d96497768ee16af31c346de6fc9eb Mon Sep 17 00:00:00 2001 From: Isaac Mann Date: Fri, 16 Aug 2019 14:11:11 -0400 Subject: [PATCH] chore: Configs extend root config --- .../schematics/configuration/configuration.ts | 28 +++++++++++++++---- .../lib-files/.storybook/addons.js__tmpl__ | 1 + .../lib-files/.storybook/config.js__tmpl__ | 8 ++++++ .../.storybook/tsconfig.json | 0 .../.storybook/webpack.config.js__tmpl__ | 6 ++++ .../.storybook/addons.js | 0 .../.storybook/config.js | 4 ++- .../root-files/.storybook/tsconfig.json | 5 ++++ .../.storybook/webpack.config.js | 0 9 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 packages/storybook/src/schematics/configuration/lib-files/.storybook/addons.js__tmpl__ create mode 100644 packages/storybook/src/schematics/configuration/lib-files/.storybook/config.js__tmpl__ rename packages/storybook/src/schematics/configuration/{files => lib-files}/.storybook/tsconfig.json (100%) create mode 100644 packages/storybook/src/schematics/configuration/lib-files/.storybook/webpack.config.js__tmpl__ rename packages/storybook/src/schematics/configuration/{files => root-files}/.storybook/addons.js (100%) rename packages/storybook/src/schematics/configuration/{files => root-files}/.storybook/config.js (74%) create mode 100644 packages/storybook/src/schematics/configuration/root-files/.storybook/tsconfig.json rename packages/storybook/src/schematics/configuration/{files => root-files}/.storybook/webpack.config.js (100%) diff --git a/packages/storybook/src/schematics/configuration/configuration.ts b/packages/storybook/src/schematics/configuration/configuration.ts index fef3c0620858f0..ade9f7deb46efb 100644 --- a/packages/storybook/src/schematics/configuration/configuration.ts +++ b/packages/storybook/src/schematics/configuration/configuration.ts @@ -8,12 +8,14 @@ import { schematic, SchematicContext, Tree, - url + url, + template } from '@angular-devkit/schematics'; import { getProjectConfig, updateWorkspace, - addPackageWithNgAdd + addPackageWithNgAdd, + offsetFromRoot } from '@nrwl/workspace'; import { StorybookStoriesSchema } from '../../../../angular/src/schematics/stories/stories'; import { parseJsonAtPath } from '../../utils/utils'; @@ -23,7 +25,8 @@ import { StorybookConfigureSchema } from './schema'; export default function(schema: StorybookConfigureSchema): Rule { return chain([ schematic('ng-add', {}), - createStorybookDir(schema.name), + createRootStorybookDir(), + createLibStorybookDir(schema.name), configureTsConfig(schema.name), addStorybookTask(schema.name), schema.configureCypress @@ -41,13 +44,28 @@ export default function(schema: StorybookConfigureSchema): Rule { ]); } -function createStorybookDir(projectName: string): Rule { +function createRootStorybookDir(): Rule { return (tree: Tree, context: SchematicContext) => { context.logger.debug('adding .storybook folder to lib'); + return chain([mergeWith(apply(url('./root-files'), []))])(tree, context); + }; +} + +function createLibStorybookDir(projectName: string): Rule { + return (tree: Tree, context: SchematicContext) => { + context.logger.debug('adding .storybook folder to lib'); + const projectConfig = getProjectConfig(tree, projectName); + return chain([ mergeWith( - apply(url('./files'), [move(getProjectConfig(tree, projectName).root)]) + apply(url('./lib-files'), [ + template({ + tmpl: '', + offsetFromRoot: offsetFromRoot(projectConfig.root) + }), + move(projectConfig.root) + ]) ) ])(tree, context); }; diff --git a/packages/storybook/src/schematics/configuration/lib-files/.storybook/addons.js__tmpl__ b/packages/storybook/src/schematics/configuration/lib-files/.storybook/addons.js__tmpl__ new file mode 100644 index 00000000000000..9ba582015be3ae --- /dev/null +++ b/packages/storybook/src/schematics/configuration/lib-files/.storybook/addons.js__tmpl__ @@ -0,0 +1 @@ +import '<%= offsetFromRoot %>../.storybook/addons'; diff --git a/packages/storybook/src/schematics/configuration/lib-files/.storybook/config.js__tmpl__ b/packages/storybook/src/schematics/configuration/lib-files/.storybook/config.js__tmpl__ new file mode 100644 index 00000000000000..a95a67def00049 --- /dev/null +++ b/packages/storybook/src/schematics/configuration/lib-files/.storybook/config.js__tmpl__ @@ -0,0 +1,8 @@ +import { configure } from '<%= offsetFromRoot %>../.storybook/config'; + +function loadStories() { + const req = require.context('../src/lib', true, /\.stories\.ts$/); + req.keys().forEach(filename => req(filename)); +} + +configure(loadStories, module); diff --git a/packages/storybook/src/schematics/configuration/files/.storybook/tsconfig.json b/packages/storybook/src/schematics/configuration/lib-files/.storybook/tsconfig.json similarity index 100% rename from packages/storybook/src/schematics/configuration/files/.storybook/tsconfig.json rename to packages/storybook/src/schematics/configuration/lib-files/.storybook/tsconfig.json diff --git a/packages/storybook/src/schematics/configuration/lib-files/.storybook/webpack.config.js__tmpl__ b/packages/storybook/src/schematics/configuration/lib-files/.storybook/webpack.config.js__tmpl__ new file mode 100644 index 00000000000000..b5883ae28ce06c --- /dev/null +++ b/packages/storybook/src/schematics/configuration/lib-files/.storybook/webpack.config.js__tmpl__ @@ -0,0 +1,6 @@ +const rootWebpackConfig = require('<%= offsetFromRoot %>../.storybook/webpack.config'); +// Export a function. Accept the base config as the only param. +module.exports = async ({ config, mode }) => { + config = await rootWebpackConfig({ config, mode }); + return config; +}; diff --git a/packages/storybook/src/schematics/configuration/files/.storybook/addons.js b/packages/storybook/src/schematics/configuration/root-files/.storybook/addons.js similarity index 100% rename from packages/storybook/src/schematics/configuration/files/.storybook/addons.js rename to packages/storybook/src/schematics/configuration/root-files/.storybook/addons.js diff --git a/packages/storybook/src/schematics/configuration/files/.storybook/config.js b/packages/storybook/src/schematics/configuration/root-files/.storybook/config.js similarity index 74% rename from packages/storybook/src/schematics/configuration/files/.storybook/config.js rename to packages/storybook/src/schematics/configuration/root-files/.storybook/config.js index fbec71b3634400..8e6bb40a92eb12 100644 --- a/packages/storybook/src/schematics/configuration/files/.storybook/config.js +++ b/packages/storybook/src/schematics/configuration/root-files/.storybook/config.js @@ -2,10 +2,12 @@ import { configure, addDecorator } from '@storybook/angular'; import { withKnobs } from '@storybook/addon-knobs'; function loadStories() { - const req = require.context('../src/lib', true, /\.stories\.ts$/); + const req = require.context('..', true, /\.stories\.ts$/); req.keys().forEach(filename => req(filename)); } addDecorator(withKnobs); configure(loadStories, module); + +export { configure }; diff --git a/packages/storybook/src/schematics/configuration/root-files/.storybook/tsconfig.json b/packages/storybook/src/schematics/configuration/root-files/.storybook/tsconfig.json new file mode 100644 index 00000000000000..c76ab8e21621c6 --- /dev/null +++ b/packages/storybook/src/schematics/configuration/root-files/.storybook/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../tsconfig.json", + "exclude": ["../**/test.ts", "../**/*.spec.ts"], + "include": ["../**/*"] +} diff --git a/packages/storybook/src/schematics/configuration/files/.storybook/webpack.config.js b/packages/storybook/src/schematics/configuration/root-files/.storybook/webpack.config.js similarity index 100% rename from packages/storybook/src/schematics/configuration/files/.storybook/webpack.config.js rename to packages/storybook/src/schematics/configuration/root-files/.storybook/webpack.config.js