@microsoft/api-extractor
Version:
Validate, document, and review the exported API for a TypeScript library
66 lines • 2.97 kB
JavaScript
;
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const node_core_library_1 = require("@microsoft/node-core-library");
const Extractor_1 = require("./extractor/Extractor");
/**
* ExternalApiHelper has the specific use case of generating an API json file from third-party definition files.
* This class is invoked by the gulp-core-build-typescript gulpfile, where the external package names are
* hard wired.
* The job of this method is almost the same as the API Extractor task that is executed on first party packages,
* with the exception that all packages analyzed here are external packages with definition files.
*
* @beta
*/
class ExternalApiHelper {
/**
* @param rootDir - the absolute path containing a 'package.json' file and is also a parent of the
* external package file. Ex: build.absolute_build_path.
* @param libFolder - the path to the lib folder relative to the rootDir, this is where
* 'external-api-json/external_package.api.json' file will be written. Ex: 'lib'.
* @param externalPackageFilePath - the path to the '*.d.ts' file of the external package relative to the rootDir.
* Ex: 'resources/external-api-json/es6-collection/index.t.ds'
*/
static generateApiJson(rootDir, libFolder, externalPackageFilePath) {
const entryPointFile = path.resolve(rootDir, externalPackageFilePath);
const entryPointFolder = path.dirname(entryPointFile);
const overrideTsconfig = {
target: 'es5',
module: 'commonjs',
moduleResolution: 'node',
experimentalDecorators: true,
jsx: 'react',
rootDir: entryPointFolder
};
const outputPath = path.resolve(rootDir, libFolder, 'external-api-json');
node_core_library_1.FileSystem.ensureFolder(outputPath);
const extractor = new Extractor_1.Extractor({
compiler: {
configType: 'tsconfig',
rootFolder: entryPointFolder,
overrideTsconfig: overrideTsconfig
},
project: {
entryPointSourceFile: entryPointFile
},
apiReviewFile: {
enabled: false
},
apiJsonFile: {
enabled: true,
outputFolder: outputPath
}
}, {
customLogger: {
logVerbose: (message) => { }
}
});
if (!extractor.processProject()) {
throw new Error('API Extractor failed to process the input: ' + externalPackageFilePath);
}
}
}
exports.ExternalApiHelper = ExternalApiHelper;
//# sourceMappingURL=ExternalApiHelper.js.map