Skip to content

Commit 4b88306

Browse files
authored
fix: minify mainlib docs json (#9963)
* fix: minify mainlib docs json * fix: minify them all
1 parent f9177be commit 4b88306

File tree

15 files changed

+41
-14
lines changed

15 files changed

+41
-14
lines changed

packages/api-extractor-model/src/model/ApiPackage.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
22
// See LICENSE in the project root for license information.
33

4+
import { Buffer } from 'node:buffer';
45
import { TSDocConfiguration } from '@microsoft/tsdoc';
56
import { DeclarationReference } from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference.js';
67
import { TSDocConfigFile } from '@microsoft/tsdoc-config';
@@ -10,6 +11,7 @@ import {
1011
PackageJsonLookup,
1112
type IPackageJson,
1213
type JsonObject,
14+
FileSystem,
1315
} from '@rushstack/node-core-library';
1416
import { ApiDocumentedItem, type IApiDocumentedItemOptions } from '../items/ApiDocumentedItem.js';
1517
import { ApiItem, ApiItemKind, type IApiItemJson } from '../items/ApiItem.js';
@@ -98,6 +100,11 @@ export interface IApiPackageJson extends IApiItemJson {
98100
* @public
99101
*/
100102
export interface IApiPackageSaveOptions extends IJsonFileSaveOptions {
103+
/**
104+
* Set to true to not have indentation or newlines in resulting JSON.
105+
*/
106+
minify?: boolean;
107+
101108
/**
102109
* Set to true only when invoking API Extractor's test harness.
103110
*
@@ -300,7 +307,13 @@ export class ApiPackage extends ApiItemContainerMixin(ApiNameMixin(ApiDocumented
300307
}
301308

302309
this.serializeInto(jsonObject);
303-
JsonFile.save(jsonObject, apiJsonFilename, ioptions);
310+
if (ioptions.minify) {
311+
FileSystem.writeFile(apiJsonFilename, Buffer.from(JSON.stringify(jsonObject), 'utf8'), {
312+
ensureFolderExists: ioptions.ensureFolderExists ?? true,
313+
});
314+
} else {
315+
JsonFile.save(jsonObject, apiJsonFilename, ioptions);
316+
}
304317
}
305318

306319
/**

packages/api-extractor/src/api/Extractor.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ export interface IExtractorInvokeOptions {
4141
*/
4242
compilerState?: CompilerState;
4343

44+
/**
45+
* Whether to minify the resulting doc model JSON, i.e. without any indentation or newlines.
46+
*/
47+
docModelMinify?: boolean;
48+
4449
/**
4550
* Indicates that API Extractor is running as part of a local build, e.g. on developer's
4651
* machine.
@@ -270,7 +275,7 @@ export class Extractor {
270275
apiPackage.saveToJsonFile(extractorConfig.apiJsonFilePath, {
271276
toolPackage: Extractor.packageName,
272277
toolVersion: Extractor.version,
273-
278+
minify: options?.docModelMinify ?? false,
274279
newlineConversion: extractorConfig.newlineKind,
275280
ensureFolderExists: true,
276281
testMode: extractorConfig.testMode,

packages/api-extractor/src/cli/RunAction.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ export class RunAction extends CommandLineAction {
2727

2828
private readonly _typescriptCompilerFolder: CommandLineStringParameter;
2929

30+
private readonly _minify: CommandLineFlagParameter;
31+
3032
public constructor(_parser: ApiExtractorCommandLine) {
3133
super({
3234
actionName: 'run',
@@ -57,6 +59,12 @@ export class RunAction extends CommandLineAction {
5759
description: 'Show additional informational messages in the output.',
5860
});
5961

62+
this._minify = this.defineFlagParameter({
63+
parameterLongName: '--minify',
64+
parameterShortName: '-m',
65+
description: 'Minify the resulting doc model JSON, i.e. without any indentation or newlines.',
66+
});
67+
6068
this._diagnosticsParameter = this.defineFlagParameter({
6169
parameterLongName: '--diagnostics',
6270
description:
@@ -136,6 +144,7 @@ export class RunAction extends CommandLineAction {
136144

137145
const extractorResult: ExtractorResult = Extractor.invoke(extractorConfig, {
138146
localBuild: this._localParameter.value,
147+
docModelMinify: this._minify.value,
139148
showVerboseMessages: this._verboseParameter.value,
140149
showDiagnostics: this._diagnosticsParameter.value,
141150
typescriptCompilerFolder,

packages/brokers/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__",
1111
"format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__",
1212
"fmt": "pnpm run format",
13-
"docs": "pnpm run build:docs && api-extractor run --local",
13+
"docs": "pnpm run build:docs && api-extractor run --local --minify",
1414
"prepack": "pnpm run lint && pnpm run test && pnpm run build",
1515
"changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/brokers/*'",
1616
"release": "cliff-jumper"

packages/builders/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__",
1111
"format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__",
1212
"fmt": "pnpm run format",
13-
"docs": "pnpm run build:docs && api-extractor run --local",
13+
"docs": "pnpm run build:docs && api-extractor run --local --minify",
1414
"prepack": "pnpm run lint && pnpm run test && pnpm run build",
1515
"changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/builders/*'",
1616
"release": "cliff-jumper"

packages/collection/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__",
1111
"format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__",
1212
"fmt": "pnpm run format",
13-
"docs": "pnpm run build:docs && api-extractor run --local",
13+
"docs": "pnpm run build:docs && api-extractor run --local --minify",
1414
"prepack": "pnpm run lint && pnpm run test && pnpm run build",
1515
"changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/collection/*'",
1616
"release": "cliff-jumper"

packages/core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"build:docs": "tsc -p tsconfig.docs.json",
1010
"lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src",
1111
"format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src",
12-
"docs": "pnpm run build:docs && api-extractor run --local",
12+
"docs": "pnpm run build:docs && api-extractor run --local --minify",
1313
"prepack": "pnpm run build && pnpm run lint",
1414
"changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/core/*'",
1515
"release": "cliff-jumper"

packages/discord.js/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"fmt": "pnpm run format",
1212
"docs": "docgen -i './src/*.js' './src/**/*.js' -c ./docs/index.json -r ../../ -o ./docs/docs.json && pnpm run docs:new",
1313
"docs:test": "docgen -i './src/*.js' './src/**/*.js' -c ./docs/index.json -r ../../",
14-
"docs:new": "api-extractor -d run --local",
14+
"docs:new": "api-extractor run --local --minify",
1515
"prepack": "pnpm run lint && pnpm run test",
1616
"changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/discord.js/*'",
1717
"release": "cliff-jumper"

packages/formatters/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"build:docs": "tsc -p tsconfig.docs.json",
1010
"lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__",
1111
"format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__",
12-
"docs": "pnpm run build:docs && api-extractor run --local",
12+
"docs": "pnpm run build:docs && api-extractor run --local --minify",
1313
"prepack": "pnpm run build && pnpm run lint",
1414
"changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/formatters/*'",
1515
"release": "cliff-jumper"

packages/next/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"build:docs": "tsc -p tsconfig.docs.json",
1010
"lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__",
1111
"format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__",
12-
"docs": "pnpm run build:docs && api-extractor run --local",
12+
"docs": "pnpm run build:docs && api-extractor run --local --minify",
1313
"prepack": "pnpm run build && pnpm run lint",
1414
"changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/next/*'",
1515
"release": "cliff-jumper"

0 commit comments

Comments
 (0)