From af875d02e0db0b3fc631757f91755852742e0cb9 Mon Sep 17 00:00:00 2001 From: Sean Tymon Date: Wed, 13 Dec 2017 19:22:48 +0000 Subject: [PATCH 1/6] starting ts support --- package.json | 2 ++ src/index.js | 4 +++- test/demo/src/two.js | 2 +- test/ts-demo/package.json | 3 +++ test/ts-demo/src/index.ts | 12 ++++++++++++ 5 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 test/ts-demo/package.json create mode 100644 test/ts-demo/src/index.ts diff --git a/package.json b/package.json index 4975103..43ecd9c 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,9 @@ "rollup-plugin-post-replace": "^1.0.0", "rollup-plugin-preserve-shebang": "^0.1.3", "rollup-plugin-sizes": "^0.4.2", + "rollup-plugin-typescript2": "^0.8.4", "rollup-plugin-uglify": "^2.0.1", + "typescript": "^2.6.2", "yargs": "^10.0.3" }, "devDependencies": { diff --git a/src/index.js b/src/index.js index 589bae1..87401f6 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,5 @@ import fs from 'fs'; -import { resolve, relative, dirname, basename } from 'path'; +import { resolve, relative, dirname, basename, extname } from 'path'; import chalk from 'chalk'; import { map, series } from 'asyncro'; import promisify from 'es6-promisify'; @@ -15,6 +15,7 @@ import gzipSize from 'gzip-size'; import prettyBytes from 'pretty-bytes'; import shebangPlugin from 'rollup-plugin-preserve-shebang'; import flow from 'rollup-plugin-flow'; +import typescript from 'rollup-plugin-typescript2'; const readFile = promisify(fs.readFile); const stat = promisify(fs.stat); @@ -164,6 +165,7 @@ function createConfig(options, entry, format) { input: entry, external, plugins: [ + extname(entry)==='ts' && typescript(), flow({ all: true }), nodent({ exclude: 'node_modules/**', diff --git a/test/demo/src/two.js b/test/demo/src/two.js index 92318f3..2f26474 100644 --- a/test/demo/src/two.js +++ b/test/demo/src/two.js @@ -1,3 +1,3 @@ export async function two(...args) { return args.reduce( (total, value) => total + value, 0); -} \ No newline at end of file +} diff --git a/test/ts-demo/package.json b/test/ts-demo/package.json new file mode 100644 index 0000000..3a020c0 --- /dev/null +++ b/test/ts-demo/package.json @@ -0,0 +1,3 @@ +{ + "name": "ts-demo" +} diff --git a/test/ts-demo/src/index.ts b/test/ts-demo/src/index.ts new file mode 100644 index 0000000..59df80d --- /dev/null +++ b/test/ts-demo/src/index.ts @@ -0,0 +1,12 @@ +interface Driveable { + drive(distance: number): boolean; +} + +export default class Car implements Driveable { + public drive(distance: number): boolean { + return true; + } +} + +let ferrari = new Car(); +ferrari.drive(100); From 846597554cfebe4c65e00e2acfeceb919b0832e1 Mon Sep 17 00:00:00 2001 From: Sean Tymon Date: Wed, 13 Dec 2017 22:54:46 +0000 Subject: [PATCH 2/6] better demo --- test/ts-demo/src/car.ts | 9 +++++++++ test/ts-demo/src/index.ts | 10 +--------- 2 files changed, 10 insertions(+), 9 deletions(-) create mode 100644 test/ts-demo/src/car.ts diff --git a/test/ts-demo/src/car.ts b/test/ts-demo/src/car.ts new file mode 100644 index 0000000..4eb11a6 --- /dev/null +++ b/test/ts-demo/src/car.ts @@ -0,0 +1,9 @@ +interface Driveable { + drive(distance: number): boolean; +} + +export default class Car implements Driveable { + public drive(distance: number): boolean { + return true; + } +} diff --git a/test/ts-demo/src/index.ts b/test/ts-demo/src/index.ts index 59df80d..166493c 100644 --- a/test/ts-demo/src/index.ts +++ b/test/ts-demo/src/index.ts @@ -1,12 +1,4 @@ -interface Driveable { - drive(distance: number): boolean; -} - -export default class Car implements Driveable { - public drive(distance: number): boolean { - return true; - } -} +import Car from './car.ts'; let ferrari = new Car(); ferrari.drive(100); From 419b3debfabf795880d6a43ebf5e0bd662bec85b Mon Sep 17 00:00:00 2001 From: Sean Tymon Date: Tue, 19 Dec 2017 22:23:13 +0000 Subject: [PATCH 3/6] output es6 for es format --- src/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 87401f6..0e7345a 100644 --- a/src/index.js +++ b/src/index.js @@ -165,7 +165,13 @@ function createConfig(options, entry, format) { input: entry, external, plugins: [ - extname(entry)==='ts' && typescript(), + extname(entry)==='ts' && typescript({ + tsconfigOverride: { + compilerOptions: { + target: format==='es' ? 'es6' : 'es5' + } + } + }), flow({ all: true }), nodent({ exclude: 'node_modules/**', From a1a61bf052812cf73a66fe2a84049421aeec40ce Mon Sep 17 00:00:00 2001 From: Sean Tymon Date: Fri, 19 Jan 2018 21:32:50 +0000 Subject: [PATCH 4/6] fixes --- .gitignore | 1 + package.json | 5 +++-- src/index.js | 4 ++-- test/ts-demo/src/index.ts | 2 +- tsconfig.json | 1 + 5 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index d388f83..5185cb1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ node_modules .DS_Store *.log +.rpt2_cache build dist package-lock.json diff --git a/package.json b/package.json index 595e688..e81a263 100644 --- a/package.json +++ b/package.json @@ -8,12 +8,13 @@ "scripts": { "build": "npm run -s build:babel && npm run -s build:self", "build:babel": "babel-node --presets env src/cli.js --external all --format cjs src/*.js", - "build:self": "node dist/cli.js --external all --format cjs src/*.js", + "build:self": "node dist/cli.js --no-compress --external all --format cjs src/*.js", "prepare": "npm run -s build", "prepare:babel": "babel --presets env src/*.js -d dist && npm t", "lint": "eslint src", "test:build": "node dist/cli.js --no-compress --cwd test/demo", - "test": "npm run -s lint && npm run -s build && npm run -s test:build", + "test:build:ts": "node dist/cli.js --no-compress --cwd test/ts-demo --entry=src/index.ts", + "test": "npm run -s lint && npm run -s build && npm run -s test:build && npm run -s test:build:ts", "release": "npm run -s prepare && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish" }, "repository": "developit/microbundle", diff --git a/src/index.js b/src/index.js index 45007b9..603dc82 100644 --- a/src/index.js +++ b/src/index.js @@ -181,14 +181,14 @@ function createConfig(options, entry, format) { ], extract: true }), - extname(entry)==='ts' && typescript({ + extname(entry)==='.ts' && typescript({ tsconfigOverride: { compilerOptions: { target: format==='es' ? 'es6' : 'es5' } } }), - flow({ all: true }), + extname(entry)!=='.ts' && flow({ all: true }), nodent({ exclude: 'node_modules/**', noRuntime: true, diff --git a/test/ts-demo/src/index.ts b/test/ts-demo/src/index.ts index 166493c..e7d0f43 100644 --- a/test/ts-demo/src/index.ts +++ b/test/ts-demo/src/index.ts @@ -1,4 +1,4 @@ -import Car from './car.ts'; +import Car from './car'; let ferrari = new Car(); ferrari.drive(100); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1 @@ +{} From eaa687f7c79f7e2412bf3a0a3d99c820e2ac8577 Mon Sep 17 00:00:00 2001 From: Sean Tymon Date: Fri, 19 Jan 2018 21:47:53 +0000 Subject: [PATCH 5/6] more fixes --- package.json | 2 +- src/index.js | 10 ++-------- test/ts-demo/src/index.ts | 5 +++-- tsconfig.json | 1 - 4 files changed, 6 insertions(+), 12 deletions(-) delete mode 100644 tsconfig.json diff --git a/package.json b/package.json index e81a263..6fbe415 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "rollup-plugin-postcss": "^0.5.5", "rollup-plugin-preserve-shebang": "^0.1.3", "rollup-plugin-sizes": "^0.4.2", - "rollup-plugin-typescript2": "^0.8.4", + "rollup-plugin-typescript": "^0.8.1", "rollup-plugin-uglify": "^2.0.1", "typescript": "^2.6.2", "yargs": "^10.0.3" diff --git a/src/index.js b/src/index.js index 603dc82..c797760 100644 --- a/src/index.js +++ b/src/index.js @@ -18,7 +18,7 @@ import gzipSize from 'gzip-size'; import prettyBytes from 'pretty-bytes'; import shebangPlugin from 'rollup-plugin-preserve-shebang'; import flow from 'rollup-plugin-flow'; -import typescript from 'rollup-plugin-typescript2'; +import typescript from 'rollup-plugin-typescript'; import camelCase from 'camelcase'; const readFile = promisify(fs.readFile); @@ -181,13 +181,7 @@ function createConfig(options, entry, format) { ], extract: true }), - extname(entry)==='.ts' && typescript({ - tsconfigOverride: { - compilerOptions: { - target: format==='es' ? 'es6' : 'es5' - } - } - }), + extname(entry)==='.ts' && typescript(), extname(entry)!=='.ts' && flow({ all: true }), nodent({ exclude: 'node_modules/**', diff --git a/test/ts-demo/src/index.ts b/test/ts-demo/src/index.ts index e7d0f43..bd5f5df 100644 --- a/test/ts-demo/src/index.ts +++ b/test/ts-demo/src/index.ts @@ -1,4 +1,5 @@ import Car from './car'; -let ferrari = new Car(); -ferrari.drive(100); +let Ferrari = new Car(); + +export default Ferrari; diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 0967ef4..0000000 --- a/tsconfig.json +++ /dev/null @@ -1 +0,0 @@ -{} From 5d6aa826ff66ce978eb1e07ee469aa11096f72dc Mon Sep 17 00:00:00 2001 From: Sean Tymon Date: Fri, 19 Jan 2018 22:55:48 +0000 Subject: [PATCH 6/6] use const --- src/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/index.js b/src/index.js index 8f305e8..8dc7769 100644 --- a/src/index.js +++ b/src/index.js @@ -187,6 +187,8 @@ function createConfig(options, entry, format, writeMeta) { catch (e) {} } + const useTypescript = extname(entry)==='.ts'; + let config = { inputOptions: { input: exportType ? resolve(__dirname, '../src/lib/__entry__.js') : entry, @@ -203,8 +205,8 @@ function createConfig(options, entry, format, writeMeta) { inject: false, extract: !!writeMeta }), - extname(entry)==='.ts' && typescript(), - extname(entry)!=='.ts' && flow({ all: true }), + useTypescript && typescript(), + !useTypescript && flow({ all: true }), nodent({ exclude: 'node_modules/**', noRuntime: true, @@ -218,7 +220,7 @@ function createConfig(options, entry, format, writeMeta) { } } }), - buble({ + !useTypescript && buble({ exclude: 'node_modules/**', jsx: options.jsx || 'h', objectAssign: options.assign || 'Object.assign',