From 79f1512a1eda5fd1d8a934abdaf09704dd3c6b5b Mon Sep 17 00:00:00 2001 From: Kevin Levron Date: Mon, 26 Apr 2021 19:05:12 +0200 Subject: [PATCH] update ts conf --- .vscode/settings.json | 3 ++ api-extractor.json | 13 +++++ package.json | 9 ++-- rollup.config.js | 119 +++++++++++++++--------------------------- tsconfig.json | 11 +++- 5 files changed, 75 insertions(+), 80 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 api-extractor.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..51858bf --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "volar.tsPlugin": true +} \ No newline at end of file diff --git a/api-extractor.json b/api-extractor.json new file mode 100644 index 0000000..3f6626c --- /dev/null +++ b/api-extractor.json @@ -0,0 +1,13 @@ +{ + "mainEntryPointFilePath": "./types/export.d.ts", + "apiReport": { + "enabled": true + }, + "docModel": { + "enabled": true + }, + "dtsRollup": { + "enabled": true, + "publicTrimmedFilePath": "./dist/trois.d.ts" + } +} diff --git a/package.json b/package.json index 7127957..c7bfce0 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,9 @@ "rollup": "rollup -c" }, "devDependencies": { + "@microsoft/api-extractor": "^7.14.0", "@rollup/plugin-buble": "^0.21.3", "@rollup/plugin-replace": "^2.3.3", - "@rollup/plugin-typescript": "^8.2.1", "@types/three": "^0.127.1", "@typescript-eslint/eslint-plugin": "^4.22.0", "@typescript-eslint/parser": "^4.22.0", @@ -26,17 +26,20 @@ "eslint-plugin-vue": "^7.9.0", "gsap": "^3.5.1", "rollup-plugin-terser": "^7.0.2", + "rollup-plugin-typescript2": "^0.30.0", "rollup-plugin-vue": "^6.0.0-beta.11", "stats.js": "0.17.0", "three": "^0.127", - "typescript": "^4.1.3", + "tslib": "^2.2.0", + "typescript": "^4.1.5", "vite": "^2.1.5", "vue": "^3.0.11", "vue-eslint-parser": "^7.6.0", - "vue-tsc": "^0.0.24" + "vue-tsc": "^0.0.25" }, "main": "build/trois.js", "module": "build/trois.module.js", + "typings": "build/trois.d.ts", "repository": { "type": "git", "url": "git+https://github.com/troisjs/trois.git" diff --git a/rollup.config.js b/rollup.config.js index 146c90c..e585f48 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,11 +1,14 @@ -// import commonjs from '@rollup/plugin-commonjs'; +import path from 'path' import vue from 'rollup-plugin-vue' -// import buble from '@rollup/plugin-buble'; -import { terser } from "rollup-plugin-terser" +import typescript from 'rollup-plugin-typescript2' import replace from '@rollup/plugin-replace' -import typescript from '@rollup/plugin-typescript' +import { terser } from "rollup-plugin-terser" + +// ensure TS checks only once for each build +let hasTSChecked = false const input = 'src/export.ts' + const external = [ 'three', 'three/examples/jsm/controls/OrbitControls.js', @@ -37,78 +40,42 @@ const cdnReplaces = { delimiters: ['', ''], } -const plugins = [ - typescript(), - vue(), - // buble({ - // transforms: { asyncAwait: false, forOf: false }, - // objectAssign: 'Object.assign', - // }), -] +function createConfig(format, output, plugins = []) { + const tsPlugin = typescript({ + check: false, // !hasTSChecked, + cacheRoot: path.resolve(__dirname, 'node_modules/.tscache'), + tsconfigOverride: { + compilerOptions: { + sourceMap: false, // !hasTSChecked, + declaration: false, // !hasTSChecked, + declarationMap: false, // !hasTSChecked, + }, + include: [input], + }, + }) + hasTSChecked = true + + return { + input, + external, + output: { + format, + ...output, + // exports: 'named', + sourcemap: true, + }, + plugins: [ + tsPlugin, + vue(), + ...plugins, + ], + } +} export default [ - { - input, - external, - output: { - format: 'es', - exports: 'named', - file: 'build/trois.module.cdn.js', - sourcemap: true, - }, - plugins: [ - replace(cdnReplaces), - ...plugins, - ], - }, - { - input, - external, - output: { - format: 'es', - exports: 'named', - file: 'build/trois.module.cdn.min.js', - sourcemap: true, - }, - plugins: [ - replace(cdnReplaces), - ...plugins, - terser(), - ], - }, - { - input, - external, - output: { - format: 'es', - exports: 'named', - file: 'build/trois.module.js', - sourcemap: true, - }, - plugins, - }, - { - input, - external, - output: { - format: 'es', - exports: 'named', - file: 'build/trois.module.min.js', - sourcemap: true, - }, - plugins: [ - ...plugins, - terser(), - ], - }, - { - input, - external, - output: { - format: 'cjs', - file: 'build/trois.js', - sourcemap: true, - }, - plugins, - }, + createConfig('es', { file: 'build/trois.module.cdn.js' }, [replace(cdnReplaces)]), + createConfig('es', { file: 'build/trois.module.cdn.min.js' }, [replace(cdnReplaces), terser()]), + createConfig('es', { file: 'build/trois.module.js' }), + createConfig('es', { file: 'build/trois.module.min.js' }, [terser()]), + createConfig('cjs', { file: 'build/trois.js' }), ] diff --git a/tsconfig.json b/tsconfig.json index d196b4a..a9ac9e5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,8 +5,17 @@ // this enables stricter inference for data properties on `this` "strict": true, "moduleResolution": "node", + + // "esModuleInterop": true, + // "lib": ["esnext", "dom"], + // "types": ["vite/client"], + "sourceMap": true, + "declaration": true, + "declarationMap": true, + "outDir": "types", }, "include": ["src/**/*.ts", "src/**/*.vue"], - "exclude": ["node_modules", "src/App.vue"] + // "include": ["src/export.ts"], + // "exclude": ["src/App.vue", "src/main.ts"], }