From eb35ac9fa70a07be8946d575e7458f59767de475 Mon Sep 17 00:00:00 2001 From: GerritSe Date: Fri, 24 Mar 2017 17:31:51 +0100 Subject: [PATCH 1/2] Allow modules to be written in Typescript --- package.json | 2 ++ src/{app.js => app.ts} | 4 +++- src/index.js | 3 --- src/index.ts | 3 +++ tsconfig.json | 5 +++++ webpack/webpack.config.base.js | 11 ++++++++++- yarn.lock | 17 +++++++++++++++-- 7 files changed, 38 insertions(+), 7 deletions(-) rename src/{app.js => app.ts} (81%) delete mode 100644 src/index.js create mode 100644 src/index.ts create mode 100644 tsconfig.json diff --git a/package.json b/package.json index c50b7d0..1e0903e 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,8 @@ "karma-chrome-launcher": "^2.0.0", "karma-jasmine": "^1.1.0", "karma-webpack": "^2.0.2", + "ts-loader": "^2.0.3", + "typescript": "^2.2.1", "webpack": "~> 2.2.1", "webpack-dev-server": "~> 2.2.1" } diff --git a/src/app.js b/src/app.ts similarity index 81% rename from src/app.js rename to src/app.ts index d81bbc6..3c315a1 100644 --- a/src/app.js +++ b/src/app.ts @@ -1,4 +1,6 @@ class App { + _element: HTMLElement + constructor() { this._element = document.getElementsByTagName('body')[0] } @@ -9,4 +11,4 @@ class App { } } -export default App +export { App } diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 0887923..0000000 --- a/src/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import App from './app' - -new App().run() diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..d5cf041 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,3 @@ +import { App } from './app' + +new App().run() diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..42e12d9 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "target": "ES5" + } +} diff --git a/webpack/webpack.config.base.js b/webpack/webpack.config.base.js index a0aad3c..9e811ac 100644 --- a/webpack/webpack.config.base.js +++ b/webpack/webpack.config.base.js @@ -1,7 +1,7 @@ const path = require('path') const config = { - entry: ['./src/index.js'], + entry: ['./src/index.ts'], output: { path: path.resolve(__dirname, '..', 'dist'), filename: 'bundle.js', @@ -25,8 +25,17 @@ const config = { presets: ['es2015'] } } + }, { + test: /\.ts$/, + include: path.resolve(__dirname, '..', 'src'), + use: { + loader: 'ts-loader' + } } ] + }, + resolve: { + extensions: ['.js', '.ts'] } }; diff --git a/yarn.lock b/yarn.lock index 8492bc3..e036565 100644 --- a/yarn.lock +++ b/yarn.lock @@ -914,7 +914,7 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -colors@^1.1.0: +colors@^1.0.3, colors@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" @@ -3317,7 +3317,7 @@ select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" -"semver@2 || 3 || 4 || 5", semver@~5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -3715,6 +3715,15 @@ tryit@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" +ts-loader@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-2.0.3.tgz#89b8c87598f048df065766e07e1538f0eaeb1165" + dependencies: + colors "^1.0.3" + enhanced-resolve "^3.0.0" + loader-utils "^1.0.2" + semver "^5.0.1" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -3746,6 +3755,10 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +typescript@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9" + uglify-js@^2.7.5: version "2.8.10" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.10.tgz#bd0be568369f7be8cad2a4161fa90ada118ef73a" From ffeb0225b9de075aecbca0717f9fdb45c67b8071 Mon Sep 17 00:00:00 2001 From: GerritSe Date: Sat, 5 Aug 2017 22:22:23 +0200 Subject: [PATCH 2/2] Update webpack test configuration --- spec/example-spec.js | 2 +- webpack/webpack.config.test.js | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/spec/example-spec.js b/spec/example-spec.js index 8bb16cb..957f303 100644 --- a/spec/example-spec.js +++ b/spec/example-spec.js @@ -1,4 +1,4 @@ -import App from 'app/app' +import { App } from 'app/app' describe('An example test', () => { it('runs specs correctly', () => { diff --git a/webpack/webpack.config.test.js b/webpack/webpack.config.test.js index 08949b7..4554430 100644 --- a/webpack/webpack.config.test.js +++ b/webpack/webpack.config.test.js @@ -17,13 +17,20 @@ const config = { presets: ['es2015'] } } + }, { + test: /\.ts$/, + include: path.resolve(__dirname, '..', 'src'), + use: { + loader: 'ts-loader' + } } ] }, resolve: { alias: { 'app': path.resolve(__dirname, '..', 'src') - } + }, + extensions: ['.js', '.ts'] } };