Skip to content

Commit

Permalink
fix(docs): parse css variables docs (#2273)
Browse files Browse the repository at this point in the history
  • Loading branch information
manucorporat committed Mar 17, 2020
1 parent 39a9645 commit 1370152
Show file tree
Hide file tree
Showing 10 changed files with 32 additions and 7 deletions.
1 change: 1 addition & 0 deletions src/compiler/config/validate-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ export function validateConfig(config: d.Config): { config: d.Config, diagnostic
setBooleanConfig(config, 'minifyJs', null, !config.devMode);

setBooleanConfig(config, 'buildEs5', 'es5', !config.devMode);
setBooleanConfig(config, 'buildDocs', 'docs', !config.devMode);
setBooleanConfig(config, 'buildDist', 'esm', !config.devMode || config.buildEs5);
setBooleanConfig(config, 'profile', 'profile', config.devMode);

Expand Down
3 changes: 2 additions & 1 deletion src/compiler/output-targets/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@ export async function generateOutputTargets(config: d.Config, compilerCtx: d.Com
outputCollections(config, compilerCtx, buildCtx),
outputModulesApp(config, compilerCtx, buildCtx),
outputHydrate(config, compilerCtx, buildCtx),
outputDocs(config, compilerCtx, buildCtx),
outputAngular(config, compilerCtx, buildCtx),
outputLazyLoader(config, compilerCtx),

buildCtx.stylesPromise
]);

await outputDocs(config, compilerCtx, buildCtx),

// must run after all the other outputs
// since it validates files were created
await outputTypes(config, compilerCtx, buildCtx);
Expand Down
3 changes: 3 additions & 0 deletions src/compiler/output-targets/output-docs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import { outputCustom } from './output-custom';


export const outputDocs = async (config: d.Config, compilerCtx: d.CompilerCtx, buildCtx: d.BuildCtx) => {
if (!config.buildDocs) {
return;
}
const docsOutputTargets = config.outputTargets.filter(o => (
isOutputTargetCustom(o) ||
isOutputTargetDocsReadme(o) ||
Expand Down
6 changes: 6 additions & 0 deletions src/compiler/style/css-to-esm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { serializeImportPath } from '../transformers/stencil-import-path';
import { stripCssComments } from './style-utils';
import MagicString from 'magic-string';
import path from 'path';
import { parseStyleDocs } from '../docs/style-docs';


export const transformCssToEsm = async (input: d.TransformCssToEsmInput) => {
Expand Down Expand Up @@ -42,8 +43,13 @@ const transformCssToEsmModule = (input: d.TransformCssToEsmInput) => {
diagnostics: [],
imports: [],
defaultVarName: createCssVarName(input.file, input.mode),
styleDocs: []
};

if (input.docs) {
parseStyleDocs(results.styleDocs, input.input);
}

try {
const varNames = new Set([results.defaultVarName]);

Expand Down
14 changes: 10 additions & 4 deletions src/compiler_next/bundle/ext-transforms-plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { hasError, normalizeFsPath } from '@utils';
import { parseImportPath } from '../../compiler/transformers/stencil-import-path';
import { Plugin } from 'rollup';
import { runPluginTransformsEsmImports } from '../../compiler/plugin/plugin';
import { isOutputTargetDistCollection } from '../../compiler/output-targets/output-utils';


export const extTransformsPlugin = (config: d.Config, compilerCtx: d.CompilerCtx, buildCtx: d.BuildCtx, bundleOpts: BundleOptions): Plugin => {
Expand All @@ -19,14 +20,13 @@ export const extTransformsPlugin = (config: d.Config, compilerCtx: d.CompilerCtx
if (data != null) {
const filePath = normalizeFsPath(id);
const code = await compilerCtx.fs.readFile(filePath);
const cmp = buildCtx.components.find(c => c.tagName === data.tag);
const moduleFile = cmp && compilerCtx.moduleMap.get(cmp.sourceFilePath);
const pluginTransforms = await runPluginTransformsEsmImports(config, compilerCtx, code, filePath);

const modules = Array.from(compilerCtx.moduleMap.values());
const moduleFile = modules.find(m => m.cmps.some(c => c.tagName === data.tag));
const commentOriginalSelector = (bundleOpts.platform === 'hydrate') && (data.encapsulation === 'shadow');

if (moduleFile) {
const collectionDirs = (config.outputTargets as d.OutputTargetDist[]).filter(o => o.collectionDir);
const collectionDirs = config.outputTargets.filter(isOutputTargetDistCollection);

const relPath = config.sys.path.relative(config.srcDir, pluginTransforms.id);

Expand All @@ -46,8 +46,14 @@ export const extTransformsPlugin = (config: d.Config, compilerCtx: d.CompilerCtx
sourceMap: config.sourceMap,
minify: config.minifyCss,
autoprefixer: config.autoprefixCss,
docs: config.buildDocs
});

// Set style docs
if (cmp) {
cmp.styleDocs = cssTransformResults.styleDocs;
}

// Track dependencies
pluginTransforms.dependencies.forEach(dep => {
this.addWatchFile(dep);
Expand Down
1 change: 1 addition & 0 deletions src/compiler_next/config/validate-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ export const validateConfig = (userConfig?: Config) => {
setBooleanConfig(config, 'minifyCss', null, !config.devMode);
setBooleanConfig(config, 'minifyJs', null, !config.devMode);
setBooleanConfig(config, 'buildEs5', 'es5', !config.devMode);
setBooleanConfig(config, 'buildDocs', 'docs', !config.devMode);
setBooleanConfig(config, 'writeLog', 'log', false);
setBooleanConfig(config, 'buildAppCore', null, true);
setBooleanConfig(config, 'autoprefixCss', null, config.buildEs5);
Expand Down
3 changes: 3 additions & 0 deletions src/compiler_next/output-targets/docs/output-docs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import { outputCustom } from '../../../compiler/output-targets/output-custom';


export async function outputDocs(config: d.Config, compilerCtx: d.CompilerCtx, buildCtx: d.BuildCtx) {
if (!config.buildDocs) {
return;
}
const docsOutputTargets = config.outputTargets.filter(o => (
isOutputTargetCustom(o) ||
isOutputTargetDocsReadme(o) ||
Expand Down
4 changes: 2 additions & 2 deletions src/compiler_next/output-targets/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { outputAngular } from '../../compiler/output-targets/output-angular';
import { outputCopy } from './copy/output-copy';
import { outputCustomElements } from './dist-custom-elements';
import { outputCustomElementsBundle } from './dist-custom-elements-bundle';
import { outputDocs } from '../../compiler/output-targets/output-docs';
import { outputDocs } from './docs/output-docs';
import { outputHydrateScript } from './dist-hydrate-script';
import { outputLazy } from './dist-lazy/lazy-output';
import { outputLazyLoader } from '../../compiler/output-targets/output-lazy-loader';
Expand All @@ -30,14 +30,14 @@ export const generateOutputTargets = async (config: d.Config, compilerCtx: d.Com
outputCollection(config, compilerCtx, buildCtx, changedModuleFiles),
outputCustomElements(config, compilerCtx, buildCtx, changedModuleFiles),
outputCustomElementsBundle(config, compilerCtx, buildCtx),
outputDocs(config, compilerCtx, buildCtx),
outputHydrateScript(config, compilerCtx, buildCtx),
outputLazyLoader(config, compilerCtx),
outputApp(config, compilerCtx, buildCtx),
]);

// must run after all the other outputs
// since it validates files were created
await outputDocs(config, compilerCtx, buildCtx);
await outputTypes(config, compilerCtx, buildCtx);

timeSpan.finish('generate outputs finished');
Expand Down
3 changes: 3 additions & 0 deletions src/declarations/stencil-private.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
PrerenderRequest,
PrerenderResults,
StencilSystem,
StyleDoc,
} from './stencil-public-compiler';

import {
Expand Down Expand Up @@ -2249,6 +2250,7 @@ export interface TransformCssToEsmInput {
commentOriginalSelector?: boolean;
sourceMap?: boolean;
minify?: boolean;
docs?: boolean;
autoprefixer?: any;
}

Expand All @@ -2258,6 +2260,7 @@ export interface TransformCssToEsmOutput {
map: any;
diagnostics: Diagnostic[];
defaultVarName: string;
styleDocs: StyleDoc[];
imports: { varName: string; importPath: string;}[];
}

Expand Down
1 change: 1 addition & 0 deletions src/declarations/stencil-public-compiler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,7 @@ export interface ConfigExtras {

export interface Config extends StencilConfig {
buildAppCore?: boolean;
buildDocs?: boolean;
configPath?: string;
cwd?: string;
writeLog?: boolean;
Expand Down

0 comments on commit 1370152

Please sign in to comment.