diff --git a/packages/cli/package.json b/packages/cli/package.json index e4c4117a3e..5e028e72a8 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -63,6 +63,7 @@ "recursive-readdir": "^2.2.2", "replace-in-file": "^6.0.0", "rollup": "^2.3.2", + "rollup-plugin-dts": "^1.4.6", "rollup-plugin-esbuild": "^1.4.1", "rollup-plugin-image-files": "^1.4.2", "rollup-plugin-peer-deps-external": "^2.2.2", diff --git a/packages/cli/src/lib/packager/config.ts b/packages/cli/src/lib/packager/config.ts index ccaaf9aec5..df91f8067a 100644 --- a/packages/cli/src/lib/packager/config.ts +++ b/packages/cli/src/lib/packager/config.ts @@ -14,16 +14,35 @@ * limitations under the License. */ +import fs from 'fs-extra'; +import { relative as relativePath } from 'path'; import peerDepsExternal from 'rollup-plugin-peer-deps-external'; import commonjs from '@rollup/plugin-commonjs'; import resolve from '@rollup/plugin-node-resolve'; import postcss from 'rollup-plugin-postcss'; import esbuild from 'rollup-plugin-esbuild'; import imageFiles from 'rollup-plugin-image-files'; +import dts from 'rollup-plugin-dts'; import json from '@rollup/plugin-json'; import { RollupOptions } from 'rollup'; -export const makeConfigs = (): RollupOptions[] => { +import { paths } from '../paths'; + +export const makeConfigs = async (): Promise => { + const typesInput = paths.resolveTargetRoot( + 'dist', + relativePath(paths.targetRoot, paths.targetDir), + 'src/index.d.ts', + ); + + const declarationsExist = await fs.pathExists(typesInput); + if (!declarationsExist) { + const path = relativePath(paths.targetDir, typesInput); + throw new Error( + `No declaration files found at ${path}, be sure to run tsc to generate .d.ts files before packaging`, + ); + } + return [ { input: 'src/index.ts', @@ -50,5 +69,13 @@ export const makeConfigs = (): RollupOptions[] => { }), ], }, + { + input: typesInput, + output: { + file: 'dist/index.d.ts', + format: 'es', + }, + plugins: [dts()], + }, ]; }; diff --git a/packages/cli/src/lib/packager/packager.ts b/packages/cli/src/lib/packager/packager.ts index e1d88bf7d9..e6f71e270b 100644 --- a/packages/cli/src/lib/packager/packager.ts +++ b/packages/cli/src/lib/packager/packager.ts @@ -82,6 +82,6 @@ async function build(config: RollupOptions) { } export const buildPackage = async () => { - const configs = makeConfigs(); + const configs = await makeConfigs(); await Promise.all(configs.map(build)); }; diff --git a/yarn.lock b/yarn.lock index 856a9f7352..47b54d2f7a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17475,6 +17475,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rollup-plugin-dts@^1.4.6: + version "1.4.6" + resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-1.4.6.tgz#26e3da11ec647cfffee9658b63fa41d67e7840b9" + integrity sha512-1o5+eI97Ne8zXJrgdasn/xGi0xKuovCQwZRtPI2Lfl/c6qa9jQTFbn60NwOx3gWJ89K265/6kpDuahnBbplyWA== + optionalDependencies: + "@babel/code-frame" "^7.8.3" + rollup-plugin-esbuild@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-1.4.1.tgz#b388ebd4cda1198208d7746feea7656d485019b0"