From 4be86b402b1e685414a5c2e65b0ca4ac51999fb9 Mon Sep 17 00:00:00 2001 From: Spencer Date: Thu, 15 Mar 2018 14:53:43 -0700 Subject: [PATCH] [webpack] use babel to ensure legacy browser compatibility (#645) --- package.json | 16 +++++++++++----- webpack_config/angular.js | 9 +++++---- webpack_config/browser.js | 9 +++++---- webpack_config/jquery.js | 9 +++++---- webpack_config/lib.js | 16 +++++++++++++++- 5 files changed, 41 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index f3908649c..8d7e16bd0 100644 --- a/package.json +++ b/package.json @@ -45,10 +45,13 @@ ] }, "devDependencies": { + "@babel/core": "^7.0.0-beta.41", + "@babel/preset-env": "^7.0.0-beta.41", "@spalger/eslint-config-personal": "^0.4.0", "aliasify": "^2.1.0", "async": "~0.8.0", - "babel-eslint": "^6.0.4", + "babel-eslint": "^8.2.2", + "babel-loader": "^8.0.0-beta", "blanket": "^1.2.3", "bluebird": "^2.9.14", "browserify": "^16.1.1", @@ -76,7 +79,7 @@ "grunt-prompt": "^1.3.3", "grunt-run": "^0.6.0", "grunt-saucelabs": "^8.6.2", - "grunt-webpack": "^1.0.11", + "grunt-webpack": "^3.1.1", "jquery": "^3.3.1", "js-yaml": "^3.6.0", "load-grunt-config": "^0.19.2", @@ -94,8 +97,8 @@ "split": "~0.3.2", "through2": "~0.6.3", "through2-map": "~1.4.0", - "webpack": "^1.13.0", - "webpack-dev-server": "^1.14.1", + "webpack": "^3.10.0", + "webpack-dev-server": "^2.11.1", "xmlbuilder": "~0.4.3" }, "license": "Apache-2.0", @@ -107,6 +110,9 @@ "lodash.isempty": "^4.4.0", "lodash.trimend": "^4.5.1" }, + "resolutions": { + "grunt-webpack/deep-for-each": "https://github.com/spalger/js-deep-for-each/releases/download/v2.0.2-fix-missing-lodash-dep/deep-for-each-2.0.2.tgz" + }, "repository": { "type": "git", "url": "http://github.com/elastic/elasticsearch-js.git" @@ -120,4 +126,4 @@ "engines": { "node": ">=0.8" } -} \ No newline at end of file +} diff --git a/webpack_config/angular.js b/webpack_config/angular.js index c5877d037..7879e3433 100644 --- a/webpack_config/angular.js +++ b/webpack_config/angular.js @@ -1,5 +1,5 @@ -const DefinePlugin = require('webpack/lib/DefinePlugin') -const { ignoreLoader, rel } = require('./lib') +const webpack = require('webpack') +const { jsLoader, ignoreLoader, rel } = require('./lib') module.exports = { context: rel('src'), @@ -9,7 +9,8 @@ module.exports = { path: rel('dist'), }, module: { - loaders: [ + rules: [ + jsLoader(), ignoreLoader([ 'src/lib/connectors/jquery.js', 'src/lib/connectors/xhr.js', @@ -18,7 +19,7 @@ module.exports = { ], }, plugins: [ - new DefinePlugin({ + new webpack.DefinePlugin({ 'process.env.NODE_ENV': '"production"', }), ], diff --git a/webpack_config/browser.js b/webpack_config/browser.js index c5a09c60f..648c82eff 100644 --- a/webpack_config/browser.js +++ b/webpack_config/browser.js @@ -1,5 +1,5 @@ -const DefinePlugin = require('webpack/lib/DefinePlugin') -const { ignoreLoader, rel } = require('./lib') +const webpack = require('webpack') +const { jsLoader, ignoreLoader, rel } = require('./lib') module.exports = { context: rel('src'), @@ -11,7 +11,8 @@ module.exports = { libraryTarget: 'umd' }, module: { - loaders: [ + rules: [ + jsLoader(), ignoreLoader([ 'src/lib/connectors/jquery.js', 'src/lib/connectors/angular.js' @@ -19,7 +20,7 @@ module.exports = { ], }, plugins: [ - new DefinePlugin({ + new webpack.DefinePlugin({ 'process.env.NODE_ENV': '"production"', }), ], diff --git a/webpack_config/jquery.js b/webpack_config/jquery.js index 93c7713fa..df1b607ce 100644 --- a/webpack_config/jquery.js +++ b/webpack_config/jquery.js @@ -1,5 +1,5 @@ -const DefinePlugin = require('webpack/lib/DefinePlugin') -const { ignoreLoader, rel } = require('./lib') +const webpack = require('webpack') +const { jsLoader, ignoreLoader, rel } = require('./lib') module.exports = { context: rel('src'), @@ -9,7 +9,8 @@ module.exports = { path: rel('dist'), }, module: { - loaders: [ + rules: [ + jsLoader(), ignoreLoader([ 'src/lib/connectors/angular.js', 'src/lib/connectors/xhr.js', @@ -18,7 +19,7 @@ module.exports = { ], }, plugins: [ - new DefinePlugin({ + new webpack.DefinePlugin({ 'process.env.NODE_ENV': '"production"', }), ], diff --git a/webpack_config/lib.js b/webpack_config/lib.js index b7107e631..9a36a6b54 100644 --- a/webpack_config/lib.js +++ b/webpack_config/lib.js @@ -12,9 +12,23 @@ function ignoreLoader(ignores) { function jsLoader() { return { - loader: 'babel-loader', test: /\.js$/, include: rel('src'), + loader: 'babel-loader', + options: { + babelrc: false, + presets: [ + ['@babel/preset-env', { + targets: { + browsers: [ + 'last 2 versions', + '> 5%', + 'Safari 7', // for PhantomJS support + ] + } + }] + ] + } } }