Skip to content

Commit df8ddae

Browse files
authored
Merge pull request #958 from gaearon/typescript-ignore
feat. Better typescript with babel 7. implements #884
2 parents 646438c + 806d526 commit df8ddae

File tree

8 files changed

+1309
-1428
lines changed

8 files changed

+1309
-1428
lines changed

README.md

+20-2
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ There are 2 different ways to do it.
112112
{
113113
loader: 'babel-loader',
114114
options: {
115-
babelrc: true,
115+
babelrc: false,
116116
plugins: ['react-hot-loader/babel'],
117117
},
118118
},
@@ -131,7 +131,25 @@ In this case you have to modify your `tsconfig.json`, and compile to ES6 mode, a
131131
}
132132
```
133133

134-
##### Add babel BEFORE typescript (preferred)
134+
As long you cannot ship ES6 to production, you can create a `tsconfig.dev.json`, "extend" the base tsconfig and use "dev" config in dev webpack build
135+
. Details
136+
for [ts-loader](https://github.com/TypeStrong/ts-loader#configfile-string-defaulttsconfigjson)
137+
, for [awesome-typescript-loader](https://github.com/s-panferov/awesome-typescript-loader#configfilename-string-defaulttsconfigjson).
138+
139+
```json
140+
{
141+
"extends": "./tsconfig",
142+
"compilerOptions": {
143+
"target": "es6"
144+
}
145+
}
146+
```
147+
148+
Keep in mind - awesome-typescript-loader [has a built in feature](https://github.com/s-panferov/awesome-typescript-loader#usebabel-boolean-defaultfalse) (`useBabel`) to _babelify_ result.
149+
150+
##### Add babel BEFORE typescript
151+
152+
> Note: this way requires babel 7 and [babel-loader@^8.0.0](https://github.com/babel/babel-loader#install)
135153
136154
```js
137155
{

examples/typescript/.babelrc

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{
2-
"presets": ["env", "react"],
3-
"plugins": ["react-hot-loader/babel", "transform-class-properties"]
4-
}
2+
"plugins": [
3+
"@babel/plugin-syntax-typescript",
4+
"@babel/plugin-syntax-decorators",
5+
"@babel/plugin-syntax-jsx",
6+
"react-hot-loader/babel"
7+
]
8+
}

examples/typescript/package.json

+7-6
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,23 @@
66
"start": "webpack-dev-server --hot"
77
},
88
"devDependencies": {
9+
"@babel/core": "^7.0.0-beta.46",
10+
"@babel/plugin-syntax-decorators": "^7.0.0-beta.46",
11+
"@babel/plugin-syntax-jsx": "^7.0.0-beta.46",
12+
"@babel/plugin-syntax-typescript": "^7.0.0-beta.46",
913
"awesome-typescript-loader": "^3.4.1",
10-
"babel-core": "^6.26.0",
11-
"babel-loader": "^7.1.2",
12-
"babel-plugin-transform-class-properties": "^6.24.1",
13-
"babel-preset-env": "^1.6.1",
14-
"babel-preset-react": "^6.24.1",
14+
"babel-loader": "^8.0.0-beta.2",
1515
"html-webpack-plugin": "^2.30.1",
1616
"typescript": "^2.6.2",
1717
"webpack": "^3.10.0",
1818
"webpack-dev-server": "^2.9.7"
1919
},
2020
"dependencies": {
21+
"@babel/preset-env": "^7.0.0-beta.46",
2122
"@types/react": "^16.0.31",
2223
"@types/react-dom": "^16.0.3",
2324
"react": "^16.2.0",
2425
"react-dom": "^16.2.0",
25-
"react-hot-loader": "^4.0.0-beta.22"
26+
"react-hot-loader": "^4.1.2"
2627
}
2728
}

examples/typescript/webpack.config.babel.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,23 @@ module.exports = {
99
path: path.join(__dirname, 'dist'),
1010
filename: 'bundle.js',
1111
},
12+
devtool: false,
1213
module: {
1314
rules: [
1415
{
1516
test: /\.tsx?$/,
16-
use: ['babel-loader', 'awesome-typescript-loader'],
17+
use: ['awesome-typescript-loader', 'babel-loader'],
1718
},
1819
],
1920
},
2021
resolve: {
2122
extensions: ['.ts', '.tsx', '.js', '.jsx'],
23+
alias: {
24+
react: path.resolve(path.join(__dirname, './node_modules/react')),
25+
'babel-core': path.resolve(
26+
path.join(__dirname, './node_modules/@babel/core'),
27+
),
28+
},
2229
},
2330
plugins: [new HtmlWebpackPlugin(), new webpack.NamedModulesPlugin()],
2431
}

0 commit comments

Comments
 (0)