2019-01-15 18:53:27 -05:00
|
|
|
/**
|
|
|
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
|
|
* or more contributor license agreements. See the NOTICE file
|
|
|
|
* distributed with this work for additional information
|
|
|
|
* regarding copyright ownership. The ASF licenses this file
|
|
|
|
* to you under the Apache License, Version 2.0 (the
|
|
|
|
* "License"); you may not use this file except in compliance
|
|
|
|
* with the License. You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing,
|
|
|
|
* software distributed under the License is distributed on an
|
|
|
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
|
|
* KIND, either express or implied. See the License for the
|
|
|
|
* specific language governing permissions and limitations
|
|
|
|
* under the License.
|
|
|
|
*/
|
2018-10-24 01:33:51 -04:00
|
|
|
const os = require('os');
|
2016-07-14 22:50:47 -04:00
|
|
|
const path = require('path');
|
2018-09-04 13:39:05 -04:00
|
|
|
const webpack = require('webpack');
|
2019-11-27 17:02:48 -05:00
|
|
|
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
|
|
|
|
.BundleAnalyzerPlugin;
|
2017-06-13 12:44:00 -04:00
|
|
|
const CleanWebpackPlugin = require('clean-webpack-plugin');
|
[webpack 4] third time's the charm ;) (#5370)
* [perf] add webpack 4 + SplitChunks + lazy load visualizations (#5240)
* [webpack] setup lazy loading for all visualizations
* [lazy-load] push renderVis function to <Chart /> state
* no mapbox token
* [lazy loading] use native webpack import func to fix chunk names, add babel-plugin-syntax-dynamic-import, fix rebase bug.
* fix geojson import, undefined t, and fix async css bug
* [lazy load] actually add babel-plugin-syntax-dynamic-import
* [webpack] working dev version of webpack v4
* [webpack 4] fix url issues, use mini-css-extract-plugin and webpack-assets-manifest plugins
* [webpack 4] use splitchunks for all files, update templates to multi-file entrypoints
* [webpack 4] multiple theme entry files for markup vis css, don't uglify mapbox
* [webpack 4] lint python manifest changes, update yarn lock.
* [webpack 4] fix tests with babel-plugin-dynamic-import-node
* [webpack 4] only use 'dynamic-import-node' plugin in tests, update <Chart /> vis promise when vis type changes
* [webpack 4] clean up package.json and yarn.lock after rebase
* [webpack 4] lint?
* [webpack 4] lint for real
* [webpack 4][istanbul] ignore visualizations/index.js
* [webpack 4] fix rebase bug, update dashboard/deprecated/chart/Chart.jsx to use vis promises.
* [webpack 4] lint and test
* [webpack 4] yarn.lock
2018-07-17 16:55:03 -04:00
|
|
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
2018-09-05 12:17:18 -04:00
|
|
|
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
|
2018-09-27 15:49:05 -04:00
|
|
|
const SpeedMeasurePlugin = require('speed-measure-webpack-plugin');
|
|
|
|
const TerserPlugin = require('terser-webpack-plugin');
|
[webpack 4] third time's the charm ;) (#5370)
* [perf] add webpack 4 + SplitChunks + lazy load visualizations (#5240)
* [webpack] setup lazy loading for all visualizations
* [lazy-load] push renderVis function to <Chart /> state
* no mapbox token
* [lazy loading] use native webpack import func to fix chunk names, add babel-plugin-syntax-dynamic-import, fix rebase bug.
* fix geojson import, undefined t, and fix async css bug
* [lazy load] actually add babel-plugin-syntax-dynamic-import
* [webpack] working dev version of webpack v4
* [webpack 4] fix url issues, use mini-css-extract-plugin and webpack-assets-manifest plugins
* [webpack 4] use splitchunks for all files, update templates to multi-file entrypoints
* [webpack 4] multiple theme entry files for markup vis css, don't uglify mapbox
* [webpack 4] lint python manifest changes, update yarn lock.
* [webpack 4] fix tests with babel-plugin-dynamic-import-node
* [webpack 4] only use 'dynamic-import-node' plugin in tests, update <Chart /> vis promise when vis type changes
* [webpack 4] clean up package.json and yarn.lock after rebase
* [webpack 4] lint?
* [webpack 4] lint for real
* [webpack 4][istanbul] ignore visualizations/index.js
* [webpack 4] fix rebase bug, update dashboard/deprecated/chart/Chart.jsx to use vis promises.
* [webpack 4] lint and test
* [webpack 4] yarn.lock
2018-07-17 16:55:03 -04:00
|
|
|
const WebpackAssetsManifest = require('webpack-assets-manifest');
|
2018-10-24 01:33:51 -04:00
|
|
|
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
|
2018-09-05 12:17:18 -04:00
|
|
|
|
2018-09-04 13:39:05 -04:00
|
|
|
// Parse command-line arguments
|
|
|
|
const parsedArgs = require('minimist')(process.argv.slice(2));
|
2016-03-18 02:44:58 -04:00
|
|
|
|
2016-07-27 19:57:05 -04:00
|
|
|
// input dir
|
|
|
|
const APP_DIR = path.resolve(__dirname, './');
|
|
|
|
// output dir
|
2016-08-30 00:55:31 -04:00
|
|
|
const BUILD_DIR = path.resolve(__dirname, './dist');
|
2016-07-14 22:50:47 -04:00
|
|
|
|
2018-09-04 13:39:05 -04:00
|
|
|
const {
|
|
|
|
mode = 'development',
|
|
|
|
devserverPort = 9000,
|
|
|
|
supersetPort = 8088,
|
2018-09-27 15:49:05 -04:00
|
|
|
measure = false,
|
|
|
|
analyzeBundle = false,
|
2018-09-04 13:39:05 -04:00
|
|
|
} = parsedArgs;
|
|
|
|
|
|
|
|
const isDevMode = mode !== 'production';
|
|
|
|
|
|
|
|
const plugins = [
|
|
|
|
// creates a manifest.json mapping of name to hashed output used in template files
|
|
|
|
new WebpackAssetsManifest({
|
|
|
|
publicPath: true,
|
|
|
|
// This enables us to include all relevant files for an entry
|
|
|
|
entrypoints: true,
|
|
|
|
// Also write to disk when using devServer
|
|
|
|
// instead of only keeping manifest.json in memory
|
|
|
|
// This is required to make devServer work with flask.
|
|
|
|
writeToDisk: isDevMode,
|
|
|
|
}),
|
|
|
|
|
|
|
|
// create fresh dist/ upon build
|
|
|
|
new CleanWebpackPlugin(['dist']),
|
2018-09-11 13:35:52 -04:00
|
|
|
|
|
|
|
// expose mode variable to other modules
|
|
|
|
new webpack.DefinePlugin({
|
|
|
|
'process.env.WEBPACK_MODE': JSON.stringify(mode),
|
|
|
|
}),
|
2018-10-24 01:33:51 -04:00
|
|
|
|
|
|
|
// runs type checking on a separate process to speed up the build
|
|
|
|
new ForkTsCheckerWebpackPlugin({
|
|
|
|
checkSyntacticErrors: true,
|
|
|
|
}),
|
2018-09-04 13:39:05 -04:00
|
|
|
];
|
|
|
|
|
|
|
|
if (isDevMode) {
|
|
|
|
// Enable hot module replacement
|
|
|
|
plugins.push(new webpack.HotModuleReplacementPlugin());
|
|
|
|
} else {
|
|
|
|
// text loading (webpack 4+)
|
2019-11-27 17:02:48 -05:00
|
|
|
plugins.push(
|
|
|
|
new MiniCssExtractPlugin({
|
|
|
|
filename: '[name].[chunkhash].entry.css',
|
|
|
|
chunkFilename: '[name].[chunkhash].chunk.css',
|
|
|
|
}),
|
|
|
|
);
|
2018-09-05 12:17:18 -04:00
|
|
|
plugins.push(new OptimizeCSSAssetsPlugin());
|
2018-09-04 13:39:05 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
const output = {
|
|
|
|
path: BUILD_DIR,
|
|
|
|
publicPath: '/static/assets/dist/', // necessary for lazy-loaded chunks
|
|
|
|
};
|
|
|
|
|
|
|
|
if (isDevMode) {
|
|
|
|
output.filename = '[name].[hash:8].entry.js';
|
|
|
|
output.chunkFilename = '[name].[hash:8].chunk.js';
|
|
|
|
} else {
|
|
|
|
output.filename = '[name].[chunkhash].entry.js';
|
|
|
|
output.chunkFilename = '[name].[chunkhash].chunk.js';
|
|
|
|
}
|
[webpack 4] third time's the charm ;) (#5370)
* [perf] add webpack 4 + SplitChunks + lazy load visualizations (#5240)
* [webpack] setup lazy loading for all visualizations
* [lazy-load] push renderVis function to <Chart /> state
* no mapbox token
* [lazy loading] use native webpack import func to fix chunk names, add babel-plugin-syntax-dynamic-import, fix rebase bug.
* fix geojson import, undefined t, and fix async css bug
* [lazy load] actually add babel-plugin-syntax-dynamic-import
* [webpack] working dev version of webpack v4
* [webpack 4] fix url issues, use mini-css-extract-plugin and webpack-assets-manifest plugins
* [webpack 4] use splitchunks for all files, update templates to multi-file entrypoints
* [webpack 4] multiple theme entry files for markup vis css, don't uglify mapbox
* [webpack 4] lint python manifest changes, update yarn lock.
* [webpack 4] fix tests with babel-plugin-dynamic-import-node
* [webpack 4] only use 'dynamic-import-node' plugin in tests, update <Chart /> vis promise when vis type changes
* [webpack 4] clean up package.json and yarn.lock after rebase
* [webpack 4] lint?
* [webpack 4] lint for real
* [webpack 4][istanbul] ignore visualizations/index.js
* [webpack 4] fix rebase bug, update dashboard/deprecated/chart/Chart.jsx to use vis promises.
* [webpack 4] lint and test
* [webpack 4] yarn.lock
2018-07-17 16:55:03 -04:00
|
|
|
|
2019-11-27 17:02:48 -05:00
|
|
|
const PREAMBLE = ['babel-polyfill', path.join(APP_DIR, '/src/preamble.js')];
|
2018-10-30 17:51:44 -04:00
|
|
|
|
|
|
|
function addPreamble(entry) {
|
|
|
|
return PREAMBLE.concat([path.join(APP_DIR, entry)]);
|
|
|
|
}
|
|
|
|
|
2016-07-14 22:50:47 -04:00
|
|
|
const config = {
|
2017-07-25 16:57:29 -04:00
|
|
|
node: {
|
|
|
|
fs: 'empty',
|
|
|
|
},
|
2016-03-18 02:44:58 -04:00
|
|
|
entry: {
|
2018-10-30 17:51:44 -04:00
|
|
|
theme: path.join(APP_DIR, '/src/theme.js'),
|
|
|
|
preamble: PREAMBLE,
|
|
|
|
addSlice: addPreamble('/src/addSlice/index.jsx'),
|
|
|
|
explore: addPreamble('/src/explore/index.jsx'),
|
|
|
|
dashboard: addPreamble('/src/dashboard/index.jsx'),
|
|
|
|
sqllab: addPreamble('/src/SqlLab/index.jsx'),
|
|
|
|
welcome: addPreamble('/src/welcome/index.jsx'),
|
|
|
|
profile: addPreamble('/src/profile/index.jsx'),
|
2019-05-17 20:31:02 -04:00
|
|
|
showSavedQuery: [path.join(APP_DIR, '/src/showSavedQuery/index.jsx')],
|
2016-03-18 02:44:58 -04:00
|
|
|
},
|
2018-09-04 13:39:05 -04:00
|
|
|
output,
|
[webpack 4] third time's the charm ;) (#5370)
* [perf] add webpack 4 + SplitChunks + lazy load visualizations (#5240)
* [webpack] setup lazy loading for all visualizations
* [lazy-load] push renderVis function to <Chart /> state
* no mapbox token
* [lazy loading] use native webpack import func to fix chunk names, add babel-plugin-syntax-dynamic-import, fix rebase bug.
* fix geojson import, undefined t, and fix async css bug
* [lazy load] actually add babel-plugin-syntax-dynamic-import
* [webpack] working dev version of webpack v4
* [webpack 4] fix url issues, use mini-css-extract-plugin and webpack-assets-manifest plugins
* [webpack 4] use splitchunks for all files, update templates to multi-file entrypoints
* [webpack 4] multiple theme entry files for markup vis css, don't uglify mapbox
* [webpack 4] lint python manifest changes, update yarn lock.
* [webpack 4] fix tests with babel-plugin-dynamic-import-node
* [webpack 4] only use 'dynamic-import-node' plugin in tests, update <Chart /> vis promise when vis type changes
* [webpack 4] clean up package.json and yarn.lock after rebase
* [webpack 4] lint?
* [webpack 4] lint for real
* [webpack 4][istanbul] ignore visualizations/index.js
* [webpack 4] fix rebase bug, update dashboard/deprecated/chart/Chart.jsx to use vis promises.
* [webpack 4] lint and test
* [webpack 4] yarn.lock
2018-07-17 16:55:03 -04:00
|
|
|
optimization: {
|
|
|
|
splitChunks: {
|
|
|
|
chunks: 'all',
|
|
|
|
automaticNameDelimiter: '-',
|
2018-09-27 15:49:05 -04:00
|
|
|
minChunks: 2,
|
|
|
|
cacheGroups: {
|
|
|
|
default: false,
|
|
|
|
major: {
|
|
|
|
name: 'vendors-major',
|
2018-11-11 13:07:05 -05:00
|
|
|
test: /[\\/]node_modules\/(brace|react[-]dom|@superset[-]ui\/translation)[\\/]/,
|
2018-09-27 15:49:05 -04:00
|
|
|
},
|
|
|
|
},
|
2018-06-20 15:07:42 -04:00
|
|
|
},
|
[webpack 4] third time's the charm ;) (#5370)
* [perf] add webpack 4 + SplitChunks + lazy load visualizations (#5240)
* [webpack] setup lazy loading for all visualizations
* [lazy-load] push renderVis function to <Chart /> state
* no mapbox token
* [lazy loading] use native webpack import func to fix chunk names, add babel-plugin-syntax-dynamic-import, fix rebase bug.
* fix geojson import, undefined t, and fix async css bug
* [lazy load] actually add babel-plugin-syntax-dynamic-import
* [webpack] working dev version of webpack v4
* [webpack 4] fix url issues, use mini-css-extract-plugin and webpack-assets-manifest plugins
* [webpack 4] use splitchunks for all files, update templates to multi-file entrypoints
* [webpack 4] multiple theme entry files for markup vis css, don't uglify mapbox
* [webpack 4] lint python manifest changes, update yarn lock.
* [webpack 4] fix tests with babel-plugin-dynamic-import-node
* [webpack 4] only use 'dynamic-import-node' plugin in tests, update <Chart /> vis promise when vis type changes
* [webpack 4] clean up package.json and yarn.lock after rebase
* [webpack 4] lint?
* [webpack 4] lint for real
* [webpack 4][istanbul] ignore visualizations/index.js
* [webpack 4] fix rebase bug, update dashboard/deprecated/chart/Chart.jsx to use vis promises.
* [webpack 4] lint and test
* [webpack 4] yarn.lock
2018-07-17 16:55:03 -04:00
|
|
|
},
|
|
|
|
resolve: {
|
2018-10-24 01:33:51 -04:00
|
|
|
alias: {
|
|
|
|
src: path.resolve(APP_DIR, './src'),
|
|
|
|
},
|
|
|
|
extensions: ['.ts', '.tsx', '.js', '.jsx'],
|
2019-02-14 20:57:34 -05:00
|
|
|
symlinks: false,
|
Map visualization (#650)
* simple mapbox viz
use react-map-gl
superclustering of long/lat points
Added hook for map style, huge performance boost from bounding box fix, added count text on clusters
variable gradient size based on metric count
Ability to aggregate over any point property
This needed a change in the supercluster npm module, a PR was placed here:
https://github.com/mapbox/supercluster/pull/12
Aggregator function option in explore, tweaked visual defaults
better radius size management
clustering radius, point metric/unit options
scale cluster labels that don't fit, non-numeric labels for points
Minor fixes, label field affects points, text changes
serve mapbox apikey for slice
global opacity, viewport saves (hacky), bug in point labels
fixing mapbox-gl dependency
mapbox_api_key in config
expose row_limit, fix minor bugs
Add renderWhileDragging flag, groupby. Only show numerical columns for point radius
Implicitly group by lng/lat columns and error when label doesn't match groupby
'Fix' radius in miles problem, still some jankiness
derived fields cannot be typed as of now -> reverting numerical number change
better grouping error checking, expose count(*) for labelling
Custom colour for clusters/points + smart text colouring
Fixed bad positioning and overflow in explore view + small bugs + added thumbnail
* landscaping & eslint & use izip
* landscapin'
* address js code review
2016-06-24 17:16:51 -04:00
|
|
|
},
|
2018-10-24 01:33:51 -04:00
|
|
|
context: APP_DIR, // to automatically find tsconfig.json
|
2016-03-18 02:44:58 -04:00
|
|
|
module: {
|
2018-09-27 15:49:05 -04:00
|
|
|
// Uglifying mapbox-gl results in undefined errors, see
|
[webpack 4] third time's the charm ;) (#5370)
* [perf] add webpack 4 + SplitChunks + lazy load visualizations (#5240)
* [webpack] setup lazy loading for all visualizations
* [lazy-load] push renderVis function to <Chart /> state
* no mapbox token
* [lazy loading] use native webpack import func to fix chunk names, add babel-plugin-syntax-dynamic-import, fix rebase bug.
* fix geojson import, undefined t, and fix async css bug
* [lazy load] actually add babel-plugin-syntax-dynamic-import
* [webpack] working dev version of webpack v4
* [webpack 4] fix url issues, use mini-css-extract-plugin and webpack-assets-manifest plugins
* [webpack 4] use splitchunks for all files, update templates to multi-file entrypoints
* [webpack 4] multiple theme entry files for markup vis css, don't uglify mapbox
* [webpack 4] lint python manifest changes, update yarn lock.
* [webpack 4] fix tests with babel-plugin-dynamic-import-node
* [webpack 4] only use 'dynamic-import-node' plugin in tests, update <Chart /> vis promise when vis type changes
* [webpack 4] clean up package.json and yarn.lock after rebase
* [webpack 4] lint?
* [webpack 4] lint for real
* [webpack 4][istanbul] ignore visualizations/index.js
* [webpack 4] fix rebase bug, update dashboard/deprecated/chart/Chart.jsx to use vis promises.
* [webpack 4] lint and test
* [webpack 4] yarn.lock
2018-07-17 16:55:03 -04:00
|
|
|
// https://github.com/mapbox/mapbox-gl-js/issues/4359#issuecomment-288001933
|
|
|
|
noParse: /(mapbox-gl)\.js$/,
|
2018-06-11 00:43:37 -04:00
|
|
|
rules: [
|
2016-11-10 11:57:43 -05:00
|
|
|
{
|
|
|
|
test: /datatables\.net.*/,
|
2017-04-13 18:04:09 -04:00
|
|
|
loader: 'imports-loader?define=>false',
|
2016-11-10 11:57:43 -05:00
|
|
|
},
|
2018-10-24 01:33:51 -04:00
|
|
|
{
|
|
|
|
test: /\.tsx?$/,
|
|
|
|
use: [
|
|
|
|
{ loader: 'cache-loader' },
|
|
|
|
{
|
|
|
|
loader: 'thread-loader',
|
|
|
|
options: {
|
2019-11-27 17:02:48 -05:00
|
|
|
// there should be 1 cpu for the fork-ts-checker-webpack-plugin
|
2018-10-24 01:33:51 -04:00
|
|
|
workers: os.cpus().length - 1,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
loader: 'ts-loader',
|
|
|
|
options: {
|
|
|
|
// transpile only in happyPack mode
|
|
|
|
// type checking is done via fork-ts-checker-webpack-plugin
|
|
|
|
happyPackMode: true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
2016-03-18 02:44:58 -04:00
|
|
|
{
|
2016-07-14 22:50:47 -04:00
|
|
|
test: /\.jsx?$/,
|
2017-11-03 15:37:15 -04:00
|
|
|
exclude: /node_modules/,
|
2019-02-14 20:57:34 -05:00
|
|
|
include: APP_DIR,
|
2017-04-13 18:04:09 -04:00
|
|
|
loader: 'babel-loader',
|
2016-03-18 02:44:58 -04:00
|
|
|
},
|
2019-02-14 20:57:34 -05:00
|
|
|
{
|
|
|
|
// handle symlinked modules
|
|
|
|
// for debugging @superset-ui packages via npm link
|
|
|
|
test: /\.jsx?$/,
|
|
|
|
include: /node_modules\/[@]superset[-]ui.+\/src/,
|
|
|
|
use: [
|
|
|
|
{
|
|
|
|
loader: 'babel-loader',
|
|
|
|
options: {
|
|
|
|
presets: ['airbnb', '@babel/preset-react', '@babel/preset-env'],
|
2019-11-27 17:02:48 -05:00
|
|
|
plugins: [
|
|
|
|
'lodash',
|
|
|
|
'@babel/plugin-syntax-dynamic-import',
|
|
|
|
'react-hot-loader/babel',
|
|
|
|
],
|
2019-02-14 20:57:34 -05:00
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
2016-03-18 02:44:58 -04:00
|
|
|
{
|
|
|
|
test: /\.css$/,
|
2019-11-27 17:02:48 -05:00
|
|
|
include: [APP_DIR, /superset[-]ui.+\/src/],
|
2018-09-04 13:39:05 -04:00
|
|
|
use: [
|
2018-09-05 12:17:18 -04:00
|
|
|
isDevMode ? 'style-loader' : MiniCssExtractPlugin.loader,
|
2019-11-26 13:09:39 -05:00
|
|
|
{
|
|
|
|
loader: 'css-loader',
|
|
|
|
options: {
|
|
|
|
sourceMap: true,
|
|
|
|
},
|
|
|
|
},
|
2018-09-04 13:39:05 -04:00
|
|
|
],
|
2017-08-09 12:52:43 -04:00
|
|
|
},
|
|
|
|
{
|
|
|
|
test: /\.less$/,
|
|
|
|
include: APP_DIR,
|
[webpack 4] third time's the charm ;) (#5370)
* [perf] add webpack 4 + SplitChunks + lazy load visualizations (#5240)
* [webpack] setup lazy loading for all visualizations
* [lazy-load] push renderVis function to <Chart /> state
* no mapbox token
* [lazy loading] use native webpack import func to fix chunk names, add babel-plugin-syntax-dynamic-import, fix rebase bug.
* fix geojson import, undefined t, and fix async css bug
* [lazy load] actually add babel-plugin-syntax-dynamic-import
* [webpack] working dev version of webpack v4
* [webpack 4] fix url issues, use mini-css-extract-plugin and webpack-assets-manifest plugins
* [webpack 4] use splitchunks for all files, update templates to multi-file entrypoints
* [webpack 4] multiple theme entry files for markup vis css, don't uglify mapbox
* [webpack 4] lint python manifest changes, update yarn lock.
* [webpack 4] fix tests with babel-plugin-dynamic-import-node
* [webpack 4] only use 'dynamic-import-node' plugin in tests, update <Chart /> vis promise when vis type changes
* [webpack 4] clean up package.json and yarn.lock after rebase
* [webpack 4] lint?
* [webpack 4] lint for real
* [webpack 4][istanbul] ignore visualizations/index.js
* [webpack 4] fix rebase bug, update dashboard/deprecated/chart/Chart.jsx to use vis promises.
* [webpack 4] lint and test
* [webpack 4] yarn.lock
2018-07-17 16:55:03 -04:00
|
|
|
use: [
|
2018-09-05 12:17:18 -04:00
|
|
|
isDevMode ? 'style-loader' : MiniCssExtractPlugin.loader,
|
2019-11-26 13:09:39 -05:00
|
|
|
{
|
|
|
|
loader: 'css-loader',
|
|
|
|
options: {
|
|
|
|
sourceMap: true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
loader: 'less-loader',
|
|
|
|
options: {
|
|
|
|
sourceMap: true,
|
|
|
|
},
|
|
|
|
},
|
[webpack 4] third time's the charm ;) (#5370)
* [perf] add webpack 4 + SplitChunks + lazy load visualizations (#5240)
* [webpack] setup lazy loading for all visualizations
* [lazy-load] push renderVis function to <Chart /> state
* no mapbox token
* [lazy loading] use native webpack import func to fix chunk names, add babel-plugin-syntax-dynamic-import, fix rebase bug.
* fix geojson import, undefined t, and fix async css bug
* [lazy load] actually add babel-plugin-syntax-dynamic-import
* [webpack] working dev version of webpack v4
* [webpack 4] fix url issues, use mini-css-extract-plugin and webpack-assets-manifest plugins
* [webpack 4] use splitchunks for all files, update templates to multi-file entrypoints
* [webpack 4] multiple theme entry files for markup vis css, don't uglify mapbox
* [webpack 4] lint python manifest changes, update yarn lock.
* [webpack 4] fix tests with babel-plugin-dynamic-import-node
* [webpack 4] only use 'dynamic-import-node' plugin in tests, update <Chart /> vis promise when vis type changes
* [webpack 4] clean up package.json and yarn.lock after rebase
* [webpack 4] lint?
* [webpack 4] lint for real
* [webpack 4][istanbul] ignore visualizations/index.js
* [webpack 4] fix rebase bug, update dashboard/deprecated/chart/Chart.jsx to use vis promises.
* [webpack 4] lint and test
* [webpack 4] yarn.lock
2018-07-17 16:55:03 -04:00
|
|
|
],
|
2016-03-18 02:44:58 -04:00
|
|
|
},
|
2016-07-14 22:50:47 -04:00
|
|
|
/* for css linking images */
|
2016-07-27 19:57:05 -04:00
|
|
|
{
|
|
|
|
test: /\.png$/,
|
2018-10-11 23:55:40 -04:00
|
|
|
loader: 'url-loader',
|
|
|
|
options: {
|
|
|
|
limit: 10000,
|
|
|
|
name: '[name].[hash:8].[ext]',
|
|
|
|
},
|
2016-07-27 19:57:05 -04:00
|
|
|
},
|
|
|
|
{
|
2018-10-11 23:55:40 -04:00
|
|
|
test: /\.(jpg|gif)$/,
|
2016-07-27 19:57:05 -04:00
|
|
|
loader: 'file-loader',
|
2018-10-11 23:55:40 -04:00
|
|
|
options: {
|
|
|
|
name: '[name].[hash:8].[ext]',
|
|
|
|
},
|
2016-07-27 19:57:05 -04:00
|
|
|
},
|
2016-07-14 22:50:47 -04:00
|
|
|
/* for font-awesome */
|
2016-07-27 19:57:05 -04:00
|
|
|
{
|
|
|
|
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
|
2017-04-03 16:05:13 -04:00
|
|
|
loader: 'url-loader?limit=10000&mimetype=application/font-woff',
|
2016-07-27 19:57:05 -04:00
|
|
|
},
|
|
|
|
{
|
|
|
|
test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
|
|
|
|
loader: 'file-loader',
|
|
|
|
},
|
Map visualization (#650)
* simple mapbox viz
use react-map-gl
superclustering of long/lat points
Added hook for map style, huge performance boost from bounding box fix, added count text on clusters
variable gradient size based on metric count
Ability to aggregate over any point property
This needed a change in the supercluster npm module, a PR was placed here:
https://github.com/mapbox/supercluster/pull/12
Aggregator function option in explore, tweaked visual defaults
better radius size management
clustering radius, point metric/unit options
scale cluster labels that don't fit, non-numeric labels for points
Minor fixes, label field affects points, text changes
serve mapbox apikey for slice
global opacity, viewport saves (hacky), bug in point labels
fixing mapbox-gl dependency
mapbox_api_key in config
expose row_limit, fix minor bugs
Add renderWhileDragging flag, groupby. Only show numerical columns for point radius
Implicitly group by lng/lat columns and error when label doesn't match groupby
'Fix' radius in miles problem, still some jankiness
derived fields cannot be typed as of now -> reverting numerical number change
better grouping error checking, expose count(*) for labelling
Custom colour for clusters/points + smart text colouring
Fixed bad positioning and overflow in explore view + small bugs + added thumbnail
* landscaping & eslint & use izip
* landscapin'
* address js code review
2016-06-24 17:16:51 -04:00
|
|
|
],
|
2016-03-18 02:44:58 -04:00
|
|
|
},
|
2016-07-14 22:50:47 -04:00
|
|
|
externals: {
|
|
|
|
cheerio: 'window',
|
|
|
|
'react/lib/ExecutionEnvironment': true,
|
2016-07-21 00:32:20 -04:00
|
|
|
'react/lib/ReactContext': true,
|
2016-07-14 22:50:47 -04:00
|
|
|
},
|
2018-09-04 13:39:05 -04:00
|
|
|
plugins,
|
|
|
|
devtool: isDevMode ? 'cheap-module-eval-source-map' : false,
|
|
|
|
devServer: {
|
|
|
|
historyApiFallback: true,
|
|
|
|
hot: true,
|
|
|
|
index: '', // This line is needed to enable root proxying
|
|
|
|
inline: true,
|
|
|
|
stats: { colors: true },
|
|
|
|
overlay: true,
|
|
|
|
port: devserverPort,
|
|
|
|
// Only serves bundled files from webpack-dev-server
|
|
|
|
// and proxy everything else to Superset backend
|
|
|
|
proxy: {
|
|
|
|
context: () => true,
|
|
|
|
'/': `http://localhost:${supersetPort}`,
|
|
|
|
target: `http://localhost:${supersetPort}`,
|
|
|
|
},
|
|
|
|
contentBase: path.join(process.cwd(), '../static/assets/dist'),
|
|
|
|
},
|
2016-03-18 02:44:58 -04:00
|
|
|
};
|
[webpack 4] third time's the charm ;) (#5370)
* [perf] add webpack 4 + SplitChunks + lazy load visualizations (#5240)
* [webpack] setup lazy loading for all visualizations
* [lazy-load] push renderVis function to <Chart /> state
* no mapbox token
* [lazy loading] use native webpack import func to fix chunk names, add babel-plugin-syntax-dynamic-import, fix rebase bug.
* fix geojson import, undefined t, and fix async css bug
* [lazy load] actually add babel-plugin-syntax-dynamic-import
* [webpack] working dev version of webpack v4
* [webpack 4] fix url issues, use mini-css-extract-plugin and webpack-assets-manifest plugins
* [webpack 4] use splitchunks for all files, update templates to multi-file entrypoints
* [webpack 4] multiple theme entry files for markup vis css, don't uglify mapbox
* [webpack 4] lint python manifest changes, update yarn lock.
* [webpack 4] fix tests with babel-plugin-dynamic-import-node
* [webpack 4] only use 'dynamic-import-node' plugin in tests, update <Chart /> vis promise when vis type changes
* [webpack 4] clean up package.json and yarn.lock after rebase
* [webpack 4] lint?
* [webpack 4] lint for real
* [webpack 4][istanbul] ignore visualizations/index.js
* [webpack 4] fix rebase bug, update dashboard/deprecated/chart/Chart.jsx to use vis promises.
* [webpack 4] lint and test
* [webpack 4] yarn.lock
2018-07-17 16:55:03 -04:00
|
|
|
|
2018-09-27 15:49:05 -04:00
|
|
|
if (!isDevMode) {
|
|
|
|
config.optimization.minimizer = [
|
|
|
|
new TerserPlugin({
|
2019-02-15 11:53:06 -05:00
|
|
|
cache: '.terser-plugin-cache/',
|
2018-09-27 15:49:05 -04:00
|
|
|
parallel: true,
|
|
|
|
extractComments: true,
|
|
|
|
}),
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
// Bundle analyzer is disabled by default
|
|
|
|
// Pass flag --analyzeBundle=true to enable
|
|
|
|
// e.g. npm run build -- --analyzeBundle=true
|
|
|
|
if (analyzeBundle) {
|
|
|
|
config.plugins.push(new BundleAnalyzerPlugin());
|
|
|
|
}
|
|
|
|
|
|
|
|
// Speed measurement is disabled by default
|
|
|
|
// Pass flag --measure=true to enable
|
|
|
|
// e.g. npm run build -- --measure=true
|
|
|
|
const smp = new SpeedMeasurePlugin({
|
|
|
|
disable: !measure,
|
|
|
|
});
|
|
|
|
|
|
|
|
module.exports = smp.wrap(config);
|