Skip to content

Commit

Permalink
build: use api-extractor for type rollup
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Sep 3, 2019
1 parent 015d5dd commit b2d269a
Show file tree
Hide file tree
Showing 29 changed files with 300 additions and 115 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ dist
.DS_Store
node_modules
coverage
temp
explorations
TODOs.md
45 changes: 45 additions & 0 deletions api-extractor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",

"apiReport": {
"enabled": true,
"reportFolder": "<projectFolder>/temp/"
},

"docModel": {
"enabled": true
},

"dtsRollup": {
"enabled": true
},

"tsdocMetadata": {
"enabled": false
},

"messages": {
"compilerMessageReporting": {
"default": {
"logLevel": "warning"
}
},

"extractorMessageReporting": {
"default": {
"logLevel": "warning",
"addToApiReportFile": true
},

"ae-missing-release-tag": {
"logLevel": "none"
}
},

"tsdocMessageReporting": {
"default": {
"logLevel": "warning"
}
}
}
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@
]
},
"devDependencies": {
"@microsoft/api-extractor": "^7.3.9",
"@types/jest": "^24.0.18",
"chalk": "^2.4.2",
"dts-bundle": "^0.7.3",
"execa": "^2.0.4",
"fs-extra": "^8.1.0",
"jest": "^24.9.0",
Expand Down
3 changes: 0 additions & 3 deletions packages/compiler-core/.npmignore

This file was deleted.

7 changes: 7 additions & 0 deletions packages/compiler-core/api-extractor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extends": "../../api-extractor.json",
"mainEntryPointFilePath": "./dist/packages/<unscopedPackageName>/src/index.d.ts",
"dtsRollup": {
"untrimmedFilePath": "./dist/<unscopedPackageName>.d.ts"
}
}
6 changes: 5 additions & 1 deletion packages/compiler-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
"description": "@vue/compiler-core",
"main": "index.js",
"module": "dist/compiler-core.esm-bundler.js",
"types": "dist/index.d.ts",
"files": [
"index.js",
"dist"
],
"types": "dist/compiler-core.d.ts",
"sideEffects": false,
"repository": {
"type": "git",
Expand Down
3 changes: 0 additions & 3 deletions packages/reactivity/.npmignore

This file was deleted.

7 changes: 7 additions & 0 deletions packages/reactivity/api-extractor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extends": "../../api-extractor.json",
"mainEntryPointFilePath": "./dist/packages/<unscopedPackageName>/src/index.d.ts",
"dtsRollup": {
"untrimmedFilePath": "./dist/<unscopedPackageName>.d.ts"
}
}
6 changes: 5 additions & 1 deletion packages/reactivity/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
"description": "@vue/reactivity",
"main": "index.js",
"module": "dist/reactivity.esm-bundler.js",
"types": "dist/index.d.ts",
"files": [
"index.js",
"dist"
],
"types": "dist/reactivity.d.ts",
"unpkg": "dist/reactivity.global.js",
"sideEffects": false,
"repository": {
Expand Down
3 changes: 0 additions & 3 deletions packages/runtime-core/.npmignore

This file was deleted.

7 changes: 7 additions & 0 deletions packages/runtime-core/api-extractor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extends": "../../api-extractor.json",
"mainEntryPointFilePath": "./dist/packages/<unscopedPackageName>/src/index.d.ts",
"dtsRollup": {
"untrimmedFilePath": "./dist/<unscopedPackageName>.d.ts"
}
}
7 changes: 6 additions & 1 deletion packages/runtime-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@
"description": "@vue/runtime-core",
"main": "index.js",
"module": "dist/runtime-core.esm-bundler.js",
"types": "dist/index.d.ts",
"files": [
"index.js",
"dist",
"jsx.d.ts"
],
"types": "dist/runtime-core.d.ts",
"sideEffects": false,
"repository": {
"type": "git",
Expand Down
1 change: 1 addition & 0 deletions packages/runtime-core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ export { applyDirectives, resolveDirective } from './directives'

// Types -----------------------------------------------------------------------

export { App } from './apiCreateApp'
export { VNode } from './vnode'
export { FunctionalComponent, ComponentInstance } from './component'
export { RendererOptions } from './createRenderer'
Expand Down
3 changes: 0 additions & 3 deletions packages/runtime-dom/.npmignore

This file was deleted.

7 changes: 7 additions & 0 deletions packages/runtime-dom/api-extractor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extends": "../../api-extractor.json",
"mainEntryPointFilePath": "./dist/packages/<unscopedPackageName>/src/index.d.ts",
"dtsRollup": {
"untrimmedFilePath": "./dist/<unscopedPackageName>.d.ts"
}
}
6 changes: 5 additions & 1 deletion packages/runtime-dom/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
"description": "@vue/runtime-dom",
"main": "index.js",
"module": "dist/runtime-dom.esm-bundler.js",
"types": "dist/index.d.ts",
"files": [
"index.js",
"dist"
],
"types": "dist/runtime-dom.d.ts",
"unpkg": "dist/runtime-dom.global.js",
"sideEffects": false,
"buildOptions": {
Expand Down
3 changes: 0 additions & 3 deletions packages/runtime-test/.npmignore

This file was deleted.

7 changes: 7 additions & 0 deletions packages/runtime-test/api-extractor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extends": "../../api-extractor.json",
"mainEntryPointFilePath": "./dist/packages/<unscopedPackageName>/src/index.d.ts",
"dtsRollup": {
"untrimmedFilePath": "./dist/<unscopedPackageName>.d.ts"
}
}
6 changes: 5 additions & 1 deletion packages/runtime-test/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
"description": "@vue/runtime-test",
"main": "index.js",
"module": "dist/runtime-test.esm-bundler.js",
"types": "dist/index.d.ts",
"files": [
"index.js",
"dist"
],
"types": "dist/runtime-test.d.ts",
"repository": {
"type": "git",
"url": "git+https://github.com/vuejs/vue.git"
Expand Down
3 changes: 0 additions & 3 deletions packages/server-renderer/.npmignore

This file was deleted.

7 changes: 7 additions & 0 deletions packages/server-renderer/api-extractor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extends": "../../api-extractor.json",
"mainEntryPointFilePath": "./dist/packages/<unscopedPackageName>/src/index.d.ts",
"dtsRollup": {
"untrimmedFilePath": "./dist/<unscopedPackageName>.d.ts"
}
}
6 changes: 5 additions & 1 deletion packages/server-renderer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
"version": "3.0.0-alpha.1",
"description": "@vue/server-renderer",
"main": "index.js",
"types": "dist/index.d.ts",
"files": [
"index.js",
"dist"
],
"types": "dist/server-renderer.d.ts",
"buildOptions": {
"formats": ["cjs"]
},
Expand Down
3 changes: 0 additions & 3 deletions packages/vue/.npmignore

This file was deleted.

7 changes: 7 additions & 0 deletions packages/vue/api-extractor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extends": "../../api-extractor.json",
"mainEntryPointFilePath": "./dist/packages/<unscopedPackageName>/src/index.d.ts",
"dtsRollup": {
"untrimmedFilePath": "./dist/<unscopedPackageName>.d.ts"
}
}
6 changes: 5 additions & 1 deletion packages/vue/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
"description": "vue",
"main": "index.js",
"module": "dist/vue.esm-bundler.js",
"types": "dist/index.d.ts",
"files": [
"index.js",
"dist"
],
"types": "dist/vue.d.ts",
"unpkg": "dist/vue.global.js",
"buildOptions": {
"name": "Vue",
Expand Down
8 changes: 7 additions & 1 deletion rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,19 @@ function createConfig(output, plugins = []) {
output.name = packageOptions.name
}

const shouldEmitDeclarations =
process.env.TYPES != null &&
process.env.NODE_ENV === 'production' &&
!hasTSChecked

const tsPlugin = ts({
check: process.env.NODE_ENV === 'production' && !hasTSChecked,
tsconfig: path.resolve(__dirname, 'tsconfig.json'),
cacheRoot: path.resolve(__dirname, 'node_modules/.rts2_cache'),
tsconfigOverride: {
compilerOptions: {
declaration: process.env.NODE_ENV === 'production' && !hasTSChecked
declaration: shouldEmitDeclarations,
declarationMap: shouldEmitDeclarations
}
}
})
Expand Down
3 changes: 2 additions & 1 deletion scripts/bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ files.forEach(shortName => {
description: name,
main: 'index.js',
module: `dist/${shortName}.esm-bundler.js`,
types: 'dist/index.d.ts',
files: [`index.js`, `dist`],
types: `dist/${shortName}.d.ts`,
repository: {
type: 'git',
url: 'git+https://github.com/vuejs/vue.git'
Expand Down
38 changes: 28 additions & 10 deletions scripts/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ const path = require('path')
const zlib = require('zlib')
const chalk = require('chalk')
const execa = require('execa')
const dts = require('dts-bundle')
const { targets, fuzzyMatchTarget } = require('./utils')

const args = require('minimist')(process.argv.slice(2))
Expand Down Expand Up @@ -55,22 +54,41 @@ async function build(target) {
'--environment',
`NODE_ENV:production,` +
`TARGET:${target}` +
(formats ? `,FORMATS:${formats}` : ``)
(formats ? `,FORMATS:${formats}` : ``) +
(args.types ? `,TYPES:true` : ``)
],
{ stdio: 'inherit' }
)

if (pkg.types) {
const dtsOptions = {
name: target === 'vue' ? target : `@vue/${target}`,
main: `${pkgDir}/dist/packages/${target}/src/index.d.ts`,
out: `${pkgDir}/${pkg.types}`
}
dts.bundle(dtsOptions)
if (args.types && pkg.types) {
console.log()
console.log(
chalk.blue(chalk.bold(`generated typings at ${dtsOptions.out}`))
chalk.bold(chalk.yellow(`Rolling up type definitions for ${target}...`))
)

// build types
const { Extractor, ExtractorConfig } = require('@microsoft/api-extractor')

const extractorConfigPath = path.resolve(pkgDir, `api-extractor.json`)
const extractorConfig = ExtractorConfig.loadFileAndPrepare(
extractorConfigPath
)
const result = Extractor.invoke(extractorConfig, {
localBuild: true,
showVerboseMessages: true
})

if (result.succeeded) {
console.log(
chalk.bold(chalk.green(`API Extractor completed successfully.`))
)
} else {
console.error(
`API Extractor completed with ${extractorResult.errorCount} errors` +
` and ${extractorResult.warningCount} warnings`
)
process.exitCode = 1
}

await fs.remove(`${pkgDir}/dist/packages`)
}
Expand Down
Loading

0 comments on commit b2d269a

Please sign in to comment.