Skip to content

Commit 7740270

Browse files
JoshEduard Kyvenko
authored andcommitted
feat(config): Add ES6 support
1 parent bf58725 commit 7740270

File tree

6 files changed

+868
-248
lines changed

6 files changed

+868
-248
lines changed

config/paths.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const isGlobal = require('installed-by-yarn-globally')
44
const appRoot = process.cwd()
55
const ownModules = path.resolve(__dirname, '../node_modules')
66

7-
const paths = {
7+
let paths = {
88
appRoot,
99
entry: path.resolve('./src/index.js'),
1010
dist: path.resolve('./dist'),

config/webpack.config.dev.js

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@ const getClientEnvironment = require('./env')
77
const paths = require('../config/paths')
88

99
module.exports = {
10-
1110
devtool: 'eval',
1211

1312
entry: [
14-
1513
// WebpackDevServer client.
1614
require.resolve('react-dev-utils/webpackHotDevClient'),
1715

@@ -22,7 +20,6 @@ module.exports = {
2220
],
2321

2422
output: {
25-
2623
pathinfo: true,
2724

2825
// The build folder.
@@ -35,23 +32,30 @@ module.exports = {
3532
},
3633

3734
resolveLoader: {
38-
3935
// Look for loaders in own node_modules
4036
modules: paths.resolveLoaderModules,
41-
moduleExtensions: [ '-loader' ]
37+
moduleExtensions: ['-loader']
4238
},
4339

4440
resolve: {
45-
modules: [ 'node_modules' ],
46-
extensions: [ '.js', '.elm' ]
41+
modules: ['node_modules'],
42+
extensions: ['.js', '.elm']
4743
},
4844

4945
module: {
50-
5146
noParse: /\.elm$/,
5247

5348
rules: [
5449

50+
{
51+
test: /\.js$/,
52+
exclude: [/elm-stuff/, /node_modules/],
53+
loader: 'babel-loader',
54+
query: {
55+
presets: ['es2015', 'es2016', 'es2017']
56+
}
57+
},
58+
5559
{
5660
test: /\.elm$/,
5761
exclude: [/elm-stuff/, /node_modules/],
@@ -101,14 +105,7 @@ module.exports = {
101105
},
102106

103107
{
104-
exclude: [
105-
/\.html$/,
106-
/\.js$/,
107-
/\.elm$/,
108-
/\.css$/,
109-
/\.json$/,
110-
/\.svg$/
111-
],
108+
exclude: [/\.html$/, /\.js$/, /\.elm$/, /\.css$/, /\.json$/, /\.svg$/],
112109
loader: 'url-loader',
113110
options: {
114111
limit: 10000,
@@ -128,7 +125,6 @@ module.exports = {
128125
},
129126

130127
plugins: [
131-
132128
new DefinePlugin(getClientEnvironment()),
133129

134130
new HtmlWebpackPlugin({

config/webpack.config.prod.js

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,11 @@ const getClientEnvironment = require('./env')
99
const paths = require('../config/paths')
1010

1111
module.exports = {
12-
1312
bail: true,
1413

15-
entry: [
16-
paths.entry
17-
],
14+
entry: [paths.entry],
1815

1916
output: {
20-
2117
// The build folder.
2218
path: paths.dist,
2319

@@ -29,25 +25,33 @@ module.exports = {
2925
},
3026

3127
resolveLoader: {
32-
3328
// Look for loaders in own ./node_modules
3429
modules: paths.resolveLoaderModules,
35-
moduleExtensions: [ '-loader' ]
30+
moduleExtensions: ['-loader']
3631
},
3732

3833
resolve: {
39-
modules: [ 'node_modules' ],
40-
extensions: [ '.js', '.elm' ]
34+
modules: ['node_modules'],
35+
extensions: ['.js', '.elm']
4136
},
4237

4338
module: {
44-
4539
noParse: /\.elm$/,
4640

4741
rules: [
42+
43+
{
44+
test: /\.js$/,
45+
exclude: [/elm-stuff/, /node_modules/],
46+
loader: 'babel-loader',
47+
query: {
48+
presets: ['es2015', 'es2016', 'es2017']
49+
}
50+
},
51+
4852
{
4953
test: /\.elm$/,
50-
exclude: [ /elm-stuff/, /node_modules/ ],
54+
exclude: [/elm-stuff/, /node_modules/],
5155

5256
// Use the local installation of elm-make
5357
loader: 'elm-webpack-loader',
@@ -88,14 +92,7 @@ module.exports = {
8892
},
8993

9094
{
91-
exclude: [
92-
/\.html$/,
93-
/\.js$/,
94-
/\.elm$/,
95-
/\.css$/,
96-
/\.json$/,
97-
/\.svg$/
98-
],
95+
exclude: [/\.html$/, /\.js$/, /\.elm$/, /\.css$/, /\.json$/, /\.svg$/],
9996
loader: 'url-loader',
10097
options: {
10198
limit: 10000,
@@ -114,13 +111,12 @@ module.exports = {
114111
},
115112

116113
plugins: [
117-
118-
new AssetsPlugin({ path: paths.dist }),
114+
new AssetsPlugin({path: paths.dist}),
119115

120116
new DefinePlugin(getClientEnvironment()),
121117

122118
// Remove the content of the ./dist/ folder.
123-
new CleanWebpackPlugin([ 'dist' ], {
119+
new CleanWebpackPlugin(['dist'], {
124120
root: paths.appRoot,
125121
verbose: false,
126122
dry: false

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@
4242
"dependencies": {
4343
"assets-webpack-plugin": "^3.5.1",
4444
"autoprefixer": "^6.7.7",
45+
"babel-cli": "^6.24.1",
46+
"babel-core": "^6.24.1",
47+
"babel-loader": "^7.0.0",
48+
"babel-preset-es2015": "^6.24.1",
49+
"babel-preset-es2016": "^6.24.1",
50+
"babel-preset-es2017": "^6.24.1",
4551
"chalk": "1.1.3",
4652
"clean-webpack-plugin": "^0.1.16",
4753
"cli-table": "0.3.1",
@@ -74,7 +80,6 @@
7480
"commitizen": "^2.9.6",
7581
"cz-conventional-changelog": "^2.0.0",
7682
"dir-compare": "^1.3.0",
77-
"husky": "^0.13.1",
7883
"mocha": "^3.2.0",
7984
"rimraf": "^2.5.4",
8085
"semantic-release": "^6.3.2",

template/src/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
require('./main.css')
2-
var logoPath = require('./logo.svg')
3-
var Elm = require('./App.elm')
1+
import './main.css'
2+
const logoPath = require('./logo.svg')
3+
const Elm = require('./App.elm')
44

5-
var root = document.getElementById('root')
5+
const root = document.getElementById('root')
66

77
Elm.App.embed(root, logoPath)

0 commit comments

Comments
 (0)